直接选择排序

2017-11-27  本文已影响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
上一篇 下一篇

猜你喜欢

热点阅读