1.算法思想
选择排序和冒泡排序一样,两者都是运用蛮力法解决问题的排序算法。
选择排序的基本思想是:第 趟排序在无序序列
~
中找到值最小的记录,并和第
个记录交换位置作为有序序列的第
个记录
2.具体过程
- 将整个待排序序列分为有序区和无序区,初始时有序区为空,无序区包括待排序序列的所有记录。
- 在无序区查找值最小的记录,将它与无序区的第一个记录交换,使得有序区扩展一个记录,无序区减少一个记录。
- 不断重复步骤2,直到无序区只剩下一个记录为止。
3.动画演示
假设我们需要把记录按从小到大排序。蓝色表示无序区,红色表示有序区,minIndex 表示最小值的下标,下面的动画表示第一趟排序的过程

4.代码实现
Java版:
public class SelectSort {
public static void sort(int[] array) {
int length = array.length - 1, index, temp;
for (int i = 0; i < length; i++) { //对n个记录进行n-1趟排序
index = i;
//在无序区中查找最小值
for (int j = i + 1; j < length; j++) {
if (array[j] < array[index]) {
index = j;
}
}
//如果最小值记录的下标不是当前下标,则交换记录
if (index != i) {
temp = array[i];
array[i] = array[index];
array[index] = temp;
}
}
}
}