
前言:
选择排序的主要思想是每一趟从待排序列中选取一个关键字值最小的记录。第 1 趟从 n 个记录中选取关键字值最小的记录,在第 2 趟中,从剩下的 n-1 个记录中选取关键字值最小的记录,直到整个序列中的记录都选完位置。这样,由选取记录的顺序便可得到按关键字值有序的序列。
1、直接选择排序
思想:
首先在所有记录中选出关键字值最小的记录,把它与第一个记录进行位置交换,然后在其余的记录中再选出关键字值次小的记录与第二个记录进行位置交换,依此类推,直到所有记录排好序。
直接选择排序过程如下:

例题:
假设待排序的 8 个记录的关键字序列为 { 5,3,6,4,7,1,8,2} 排序过程如下图所示。

初始序列看成无序序列,从无序序列中选择最小的跟这无序序列中第一个数交换,构成有序序列。第二趟也是从无序序列中选择最小的跟无序序列中第一个数交换,下面每一趟以此类推。每趟序列遍历完后,有序序列记录的个数 + 1,无序序列的个数 - 1。
代码部分:
public void selectSort() {
RecordNode temp; // 定义一个临时变量 temp
for(int i=0; i<this.curlen-1; i++) { // 进行 i-1 次遍历,this.curlen:数组的长度
int min=i;
for(int j=i+1; j<this.curlen; j++) { // 找到一个最小的
if (r[j].key.compareTo(r[min].key)<0) min=j;
}
if (min!=i) {
temp=r[i]; // 以下是交换代码
r[i]=r[min];
r[min]=temp;
}
}
}



















