原理:将序列划分为无序和有序区,寻找无序区中的最小值和无序区的首元素交换,有序区扩大一个,循环最终完成全部排序。
private static void sortSelect(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
//寻找值最小的元素
int min = array[i];
int minIndex = i;
for (int j = i + 1; j < array.length; j++) {
if (array[j] < min) {
min = array[j];
minIndex = j;
}
}
//将最小元素与i处元素交换
array[minIndex] = array[i];
array[i] = min;
printArray(String.format(Locale.getDefault(), "min = %2d , minIndex = %2d : ", min, minIndex), array);
}
}
运行结果:
数组: 55 22 66 33 11 99 77 44 88
选择排序:
min = 11 , minIndex = 4 : 11 22 66 33 55 99 77 44 88
min = 22 , minIndex = 1 : 11 22 66 33 55 99 77 44 88
min = 33 , minIndex = 3 : 11 22 33 66 55 99 77 44 88
min = 44 , minIndex = 7 : 11 22 33 44 55 99 77 66 88
min = 55 , minIndex = 4 : 11 22 33 44 55 99 77 66 88
min = 66 , minIndex = 7 : 11 22 33 44 55 66 77 99 88
min = 77 , minIndex = 6 : 11 22 33 44 55 66 77 99 88
min = 88 , minIndex = 8 : 11 22 33 44 55 66 77 88 99
网友评论