(3)选择排序
概念:选择排序的基本思想是:每一趟在 n - i + 1 ( i = 1 , 2 , 3 , … , n-1 )个子记录中选取最小记录作为有序序列中的第i个记录。
1. 简单选择排序
思路: 待排序的一组数组,选取最小的与第一个元素交换,如此重复,选择剩余部分的与第i个元素交换。
实例
- java 实现
// 选择排序
int[] a = { 49, 38, 65, 97, 76, 13, 27, 49, 55, 4 };
private static int[] selectSort(int[] a) {
// TODO Auto-generated method stub
// 只记录最小数的下标,然后与第一个数交换
for (int i = 0; i < a.length; i++) {
int min_index = i;
int temp = a[i];
for (int j = i + 1; j < a.length; j++) {
if (temp > a[j]) {
temp = a[j];
min_index = j;
}
}
int tmp;
if (min_index != i) {
tmp = a[i];
a[i] = a[min_index];
a[min_index] = tmp;
} else {
a[i] = a[i];
}
}
return a;
}
2. 堆排序
1.概念:堆排序只需要一个记录大小的辅助空间,每个待排序记录仅占有一个存储空间。
。。。待续