选择排序详解
选择排序的核心思想很直观:每一趟从待排序列中选取一个关键字值最小(或最大)的记录,放到已排序序列的末尾。第 1 趟从 n 个记录中选出最小的,第 2 趟从剩下的 n-1 个里选次小的,直到所有记录归位。
1. 直接选择排序
核心逻辑
在所有未排序记录中选出关键字最小的,与当前位置交换。重复此过程,直到整个序列有序。
这里有一张经典的动图展示整个过程:

示例演示
假设待排序序列为 { 5, 3, 6, 4, 7, 1, 8, 2 }。初始视为无序,每趟遍历找出最小值并与当前起始位置交换。


注意:红颜色部分代表已排好序的数字。每趟结束后,有序区 +1,无序区 -1。
代码实现
public void selectSort() {
RecordNode temp;
// 进行 i-1 次遍历,this.curlen 为数组长度
for (int i = 0; i < this.curlen - 1; i++) {
int min = i;
// 在剩余元素中寻找最小值
for (int j = i + 1; j < this.curlen; j++) {
if (r[j].key.compareTo(r[min].key) < 0) {
min = j;
}
}
(min != i) {
temp = r[i];
r[i] = r[min];
r[min] = temp;
}
}
}













