`

简单排序-选择排序

阅读更多

选择排序的基本思想是,每一趟在n-i(i=0....,n-1)个记录中选取关键字最小的记录作为有序序列中的第i个记录。

 

更加具体的描述如下:

 

假设有5个待排元素需要升序排列:

 

第一趟排序,把5个元素中最小的元素拿出来,并把它放在第一个位置上,此时第一个元素的位置已经排好,不需要再排列

第二趟排序,把除掉第一个元素的其它四个元素的最小值求出,并把它放在第二个位置上

。。。。。

直到最后一次为止


选择排序算法的优点

 

相对于冒泡算法,选择算法减少了交换的次数,由n(n-1)/2到n-1次,但是元素之间的比较次数并没有改变: n(n-1)/2

 

 

Java实例如下:

 

package algorithm.selectsort;

public class SelectSortSample {

    public static void main(String[] args) {
        int[] des = {1,39,76,453,245,48,58,23,98,34,6983,57868};
       
        //升序排列
        for (int i = 0; i < des.length-1; i++) {
            int minPos = i;
            for (int j = i; j < des.length; j++) {
                if(des[minPos]>des[j]){
                   minPos = j;
                }
            }
           
            int tmp = des[i];
            des[i] = des[minPos];
            des[minPos] =tmp;
        }
       
       
        for (int i = 0; i < des.length; i++) {
            System.out.println(des[i]);
        }
       
       
    }
   
   
}

0
0
分享到:
评论

相关推荐

    经典排序算法源代码-插入排序-选择排序-冒泡排序

    - 插入排序是一种简单直观的排序算法,它的工作原理类似于我们日常整理扑克牌的过程。初始时,数组可以看作是未排序序列,已排序序列为空。每次从未排序序列中取出一个元素,找到它在已排序序列中的合适位置并将其...

    选择排序-插入排序-快速排序-冒泡排序

    - 选择排序是一种简单直观的排序算法,它的基本思想是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。...

    c语言编写的简单排序--选择排序

    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    冒泡排序---选择,插入和快速排序

    选择排序是一种简单直观的排序算法。它的基本思想是:首先在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。...

    C语言编译之数组排序--选择排序

    选择排序是一种简单直观的比较排序算法,它的工作原理是遍历待排序的数据元素,依次找到最小(或最大)的元素,放到序列的起始位置,直到全部待排序的数据元素排完。 #### 二、程序代码分析 ##### 2.1 主函数 `...

    数据结构-选择排序-C.ppt

    《数据结构-选择排序-C.ppt》文档详细介绍了选择排序这一内部排序方法,包括它的基本思想、算法描述以及算法分析。选择排序的核心在于通过一系列的比较找到数组中最小(或最大)的元素,并将其放到正确的位置,从而...

    C语言版的排序方法---选择排序.docx

    选择排序是一种简单的排序算法,它的基本思想是在未排序的序列中找到最小(或最大)的元素,存放到排序序列的起始位置,然后再从剩余未排序的元素中继续寻找最小(或最大)的元素,然后放到已排序序列的末尾。...

    最快的排序算法 谁才是最强的排序算法:快速排序-归并排序-堆排序,排序算法数据结构

    | 简单选择排序 | O(n^2) | O(n^2) | O(n^2) | O(1) | 稳定 | | 直接插入排序 | O(n^2) | O(n) | O(n^2) | O(1) | 稳定 | | 希尔排序 | O(nlogn)~O(n^2) | O(n^1.3) | O(n^2) | O(1) | 不稳定 | | 堆排序 | O(nlogn)...

    算法设计与分析-1排序算法性能分析-冒泡/选择/插入/合并/快速排序-pre ppt

    选择排序是一种简单的排序算法,其基本思想是每次从未排序的元素中找出最小(或最大)的元素,将其放置到已排序序列的末尾。时间复杂度为O(n^2),虽然简单易懂,但在处理大数据量时效率较低。 **2. 冒泡排序(Bubble...

    数据结构排序算法汇总包-直接插入排序 折半插入排序 2—路插入排序 表插入排序 希尔排序 起泡排序 快速排序 简单选择排序 树形选择排序 堆排序 归并排序链式基数排序

    实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...

    排序算法实现-支持插值排序+选择排序+冒泡排序-sort.zip

    **选择排序**是一种简单直观的排序算法,它的基本思想是通过n次比较找到未排序序列中的最小(或最大)元素,然后将其放到已排序序列的末尾。这个过程重复n-1次,直到所有元素均排序完毕。选择排序的时间复杂度是O(n...

    算法-理论基础- 排序- 直接选择排序(包含源程序).rar

    提供的压缩包文件“算法-理论基础- 排序- 直接选择排序(包含源程序).pdf”可能包含更详细的解释、示例代码以及可能的性能分析。通过阅读这份文档,你可以深入理解直接选择排序的工作机制,学习如何编写对应的源...

    SPT-08-排序-交换和选择.pdf

    常见的选择排序方法有简单选择排序。 交换排序是基于比较的排序方法,它通过比较待排序序列中的元素,并在发现逆序时交换它们的位置以达到排序的目的。冒泡排序和快速排序是两种常用的交换排序算法。冒泡排序通过...

    详解Java常用排序算法-选择排序

    详解Java常用排序算法-选择排序 选择排序(Selection Sort)是一种简单的排序算法,它的基本思想是每次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的元素排完。 选择...

    8.12-8.19-冒泡-选择-插入-希尔-快速-归并-基数-堆排序-排序算法Swift代码及UI演示

    2. 选择排序(Selection Sort):选择排序每次找到当前未排序部分的最小(或最大)元素,然后将其放到已排序部分的末尾。同样,其时间复杂度为O(n^2)。 3. 插入排序(Insertion Sort):插入排序将元素逐个插入到已...

    常用的内部排序---源码

    本资源提供的“常用的内部排序---源码”包含了C语言实现的一些经典排序算法,这对于学习和理解这些算法的工作原理非常有帮助。 1. **冒泡排序**:冒泡排序是最简单的排序算法之一,通过不断交换相邻的错误位置元素...

    算法练习-选择排序-少儿编程scratch项目源代码文件案例素材.zip

    在这个"算法练习-选择排序"的少儿编程项目中,我们将深入学习和探讨选择排序这一经典算法,并通过Scratch游戏案例进行实践。 选择排序是一种简单直观的排序算法,它的基本思想是在未排序序列中找到最小(或最大)...

    排序算法 -- 选择排序

    **选择排序**是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法,因为它可能会...

    js 图片排序 --点点滴滴

    - **选择排序**:每次遍历数组找到最小或最大的元素,将其与数组开头或末尾的元素交换。 - **插入排序**:将元素插入到已排序部分的适当位置,保持已排序部分的有序性。 - **快速排序**:使用分治策略,通过一个...

    S7-200SMART冒泡排序-优化版(可选择升序降序及数据类型等).zip

    冒泡排序是一种简单的排序算法,通过重复遍历待排序的序列,依次比较相邻元素,如果顺序错误则交换,直到遍历完整序列且无交换发生,表明序列已排序完成。其核心思想是每次比较都可能把最大的元素“浮”到序列的末尾...

Global site tag (gtag.js) - Google Analytics