不稳定
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)