排序算法---简单选择排序

不稳定

i从0开始,

第i趟排序中,从n-i个记录中选取关键字第i小的元素,作为有序序列的第i个元素

以此类推,直到有序序列包含所有的待排序关键字

    public static void selectSort(int[] array){
        //n个元素,一共需要进行n-1趟选择排序
        for(int i=0;i<array.length-1;i++){//第i趟
            //用于记录在第i趟选择排序的过程中,后n-i个元素中最小的下标。。。
            //现将后n-i个元素的第一个视为最小的,然后比较之后的,有比它还小的,替换该值即可
            int flag = i;
            for(int j=i+1;j<array.length;j++){
                if(array[j]<array[flag]){
                    flag = j;
                }
            }
            //该趟操作完成之后,flag中记录的就是这n-i个元素中最小元素的下标,将flag位置的元素和i位置的元素交换即可
            //如果在某一趟中,第一个元素就是最小的,就不用交换了
            if(flag != i){
                array[i] = array[i]^array[flag];
                array[flag] = array[i]^array[flag];
                array[i] = array[i]^array[flag];
            }
            
            System.out.print("第"+(i+1)+"趟:");
            listArray(array);
        }
    }

不论什么情况下,时间复杂度:O(n^2)

原文地址:https://www.cnblogs.com/duanjiapingjy/p/9556431.html