选择排序原理
每次循环,找出当前最小值及其索引,将本次的首元素和该元素交换
即,第一次循环后,第一个元素为最小值;第二次后,第二个元素为次最小值
特点
选择排序不稳定
时间复杂度为O(n^2)
代码
public static void selectSort(int[] array) {
int length = array.length;
for(int i = 0; i < length - 1; i ++) {
int index = i;
int temp = array[i];
for(int j = i + 1; j < length; j ++) {
if(array[index] > array[j]) {
index = j;
}
}
if(index != i) {
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
System.out.println("第" + (i+1) + "次排序后结果: " + Arrays.toString(array));
}
//System.out.println(Arrays.toString(array));
}
结果
[8, 9, 1, 7, 2, 3, 5, 4, 6, 0]
第1次排序后结果: [0, 9, 1, 7, 2, 3, 5, 4, 6, 8]
第2次排序后结果: [0, 1, 9, 7, 2, 3, 5, 4, 6, 8]
第3次排序后结果: [0, 1, 2, 7, 9, 3, 5, 4, 6, 8]
第4次排序后结果: [0, 1, 2, 3, 9, 7, 5, 4, 6, 8]
第5次排序后结果: [0, 1, 2, 3, 4, 7, 5, 9, 6, 8]
第6次排序后结果: [0, 1, 2, 3, 4, 5, 7, 9, 6, 8]
第7次排序后结果: [0, 1, 2, 3, 4, 5, 6, 9, 7, 8]
第8次排序后结果: [0, 1, 2, 3, 4, 5, 6, 7, 9, 8]
第9次排序后结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]