美文网首页
直接选择排序

直接选择排序

作者: 溪_午 | 来源:发表于2017-11-27 20:19 被阅读0次
    算法思想:

    数组的第一个元素与后面的每一个元素比较,将最小的元素放在第一位,第一位排好,为最小的元素;数组的第二位元素与其后面的每一个元素比较,将剩余元素中值最小的放到第二位,第二位排好。以此类推,直到将最后一位元素排好。

    代码描述:

       /**
         * 直接选择排序
         * @param A
         */ 
    public void sort(int A[]){
            
            for(int i=0;i<A.length;i++){
                int min=i,x;    //假设i为最小值的下标
    
                for(int j=i+1;j<A.length;j++){
                    if(A[j]<A[min]) //将下标为i的值与i之后的每个值比较,将值小的下标赋给min
                        min=j;      //找到更小的值,用min标记下标
                }
    
                if(min!=i){
                    x=A[i];         //临时储存,做交换的中间储存
                    A[i]=A[min];    //找到最小值,与下标为i的元素交换
                    A[min]=x;   
                }
            }
        }
    

    优点:直接选择排序是选择排序中最简单的一种。

    空间性能:需要1个辅助空间(即交换元素的时候,需要额外的空间存储交换的元素)

    时间复杂度:该算法共进行了n(n-1)/2次比较,最坏的情况(即全部为递减)最多需要进行n-1次交换,时间复杂度为:O(n^2)

    H_JJia.png

    相关文章

      网友评论

          本文标题:直接选择排序

          本文链接:https://www.haomeiwen.com/subject/yptjbxtx.html