本文的代码来自于《数据结构与算法(JAVA语言版)》,是笔者在网上找到的资料,非正式出刊版物。笔者对代码一些比较难以理解的部分添加了注释和图解,欢迎大家来讨论。
选择排序的基本思想是在待排序的数组中先选取最小的数字,然后和第一个位置的数字调换位置,依次往复。
如图所示
输入:数据元素数组r,数组r 的待排序区间[low..high]
输出:数组r 以关键字有序
代码:
public void selectSort(Object[] r, int low, int high){
for (int k=low; k<high-1; k++){ //作n-1 趟选取
int min = k;
for (int i=min+1; i<=high; i++) //选择关键字最小的元素
if (strategy.compare(r[i],r[min])<0) min = i;
if (k!=min){
Object temp = r[k]; //关键字最小的元素与元素r[k]交换
r[k] = r[min];
r[min] = temp;
}//end of if
}//end of for(int k=0…
}//end of selectSort