1.选择排序的基本原理
第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
2.图解
按从小到大的顺序为例
如图,将整个序列分为有序序列和无序序列。蓝色部分是每次进行比较的内容,将相对小的数字交换到前面;橙色部分则是已排好的序列。
3.代码实现
public static void selectSort(int[] array) {
// [0, bound) 已排序区间
// [bound, size) 待排序区间
for (int bound = 0; bound < array.length - 1; bound++) {
for (int cur = bound + 1; cur < array.length; cur++) {
// 使用打擂台的方式找到待排序区间中的最小值
// bound 位置的元素就是擂台
if (array[bound] > array[cur]) {
// 打败擂主, 就和擂主交换
int tmp = array[cur];
array[cur] = array[bound];
array[bound] = tmp;
}
}
}
}
来源:51CTO
作者:Linnnna
链接:https://blog.51cto.com/14298563/2470689