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.算法分析
排序类别 |
排序方法 |
时间复杂度
扫描二维码关注公众号,回复:
4543956 查看本文章
|
空间复杂度 |
稳定性 |
复杂性 |
||
平均情况 |
最坏情况 |
最好情况 |
|||||
选择排序 |
简单选择排序 |
O(N²) |
O(N²) |
O(N²) |
O(1) |
不稳定 |
简单 |
5.参考
https://www.cnblogs.com/jingmoxukong/p/4303289.html