分析
- 选出最小的元素,与数组第一个位置交换
- 选出第i小的元素,与数组第i个位置交换
- 直到第n-1个元素,与第n个元素比较为止
代码
/*
* 选择排序-简单选择排序
* 基本思想:在一组要排序的数中,选取最小的与第一个位置交换
*/
public static int SelectMinKey(int a[], int i) {
int k = i;
for (int j = i + 1; j < a.length; j++) {
if (a[k] > a[j])
k = j;
}
return k;
}
public static void selectSort(int a[]) {
int key;
for (int i = 0; i < a.length; i++) {
key = SelectMinKey(a, i);
if (key != i) {
common.swap(a, i, key);
}
common.print(a);
}
}
改进
- 每趟遍历,选出最大和最小2个数