选择排序

算法步骤:
1. 未排序序列中找到最小元素,存放到排序序列的起始位置
2. 再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾
3. 以此类推,直到所有元素均排序完毕
比较复杂度:n(n-1)/2
交换(赋值)复杂度:n-1
优点:相比冒泡排序来讲,交换的次数减少了
缺点:相对快速排序,比较次数仍然是n²

public static void selectionSort(Integer[] array){
        for(int i=0;i<array.length-1;i++){
            //最小数存放位置
            int minPosition = i;
            for(int j=i+1;j<array.length;j++){
                if(array[j]<array[minPosition]){
                    //新的最小数位置
                    minPosition = j;
                }
            }
            //找到剩余元素中的最小数,并将其交换至起始位置
            swap(array, i, minPosition);
        }
        
    }
public static void swap(Object[] array,int a,int b){
        Object temp = array[a];
        array[a] = array[b];
        array[b] = temp;
    }
posted @ 2015-02-09 20:12  风过无痕的博客  阅读(175)  评论(0编辑  收藏  举报