直接选择排序是最容易理解的排序方式,但也是时间复杂度比较高的排序方式。
其基本思想是:第i轮循环,从未排序的数字中选择最小的,然后将它与i位置上的数交换
第0次: 3 6 5 7 4 1 2
第1次: 1 6 5 7 4 3 2
第2次: 1 2 5 7 4 3 6
第3次: 1 2 3 7 4 5 6
第4次: 1 2 3 4 7 5 6
第5次: 1 2 3 4 5 7 6
第6次: 1 2 3 4 5 6 7
具体的代码如下:
/**
* 直接选择排序
* @param args
*/
private static void selectSort(int[] arr){
for(int i=0; i<arr.length-1; i++){
int flag = i;
for(int j=i+1; j<arr.length; j++){
if(arr[j] < arr[flag]){
flag = j;
}
}
int temp = arr[i];
arr[i] = arr[flag];
arr[flag] = temp;
}
}