算法原理
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
以此类推,直到所有元素均排序完毕。
排序过程

红色表示当前最小值,黄色表示已排序序列,蓝色表示当前位置
复杂度
| 平均时间复杂度 | О(n²) |
|---|---|
| 最坏时间复杂度 | О(n²) |
| 最优时间复杂度 | О(n²) |
| 空间复杂度 | 总共О(n),需要辅助空间O(1) |
| 最佳解 | 偶尔出现 |
| 排序方式 | in-place |
| 稳定性 | 不稳定 |
Java代码
public static void selectSort(int[] arr) {// 有序段的索引int minIndex;for (int i = 0; i < arr.length; i++) {minIndex = i;//遍历找出未排序中的元素中最小值下标 注:arr.lengthfor (int j = i; j < arr.length; j++) {if (arr[j] < arr[minIndex]) {minIndex = j;}}// 若最小值下标与未排序中最左侧下标不一致则交换if (minIndex != i) {int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}}}
