1. 思想
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置
2. 图解过程
每一趟选最小的。
例1:
例2:
3.CODE in JAVA
public class SelectionSort {
public static void selectionSort(int[] a) {
int n = a.length;
for (int i = 0; i < n; i++) {
int k = i;
// 找出最小值的下标
for (int j = i + 1; j < n; j++) {
if (a[j] < a[k]) {
k = j;
}
}
// 将最小值放到未排序记录的第一个位置
if (k > i) {
int tmp = a[i];
a[i] = a[k];
a[k] = tmp;
}
}
}
public static void main(String[] args) {
int[] b = { 49, 38, 65, 97, 76, 13, 27, 50 };
selectionSort(b);
for (int i : b)
System.out.print(i + " ");
}
}
4.算法分析
排序类别 | 排序方法 | 时间复杂度 | 空间复杂度 | 稳定性 | 复杂性 | ||
平均情况 | 最坏情况 | 最好情况 | |||||
选择排序 | 简单选择排序 | O(N²) | O(N²) | O(N²) | O(1) | 不稳定 | 简单 |
5.参考
https://www.cnblogs.com/jingmoxukong/p/4303289.html
http://www.cnblogs.com/xwz0528/p/4557743.html
https://www.cnblogs.com/zengzhihua/p/4456741.html