# 选择排序
- 时间复杂度(平均):
O(n^2)
- 时间复杂度(最坏):
O(n^2)
- 时间复杂度(最好):
O(n^2)
- 空间复杂度:
O(1)
- 不稳定
无论数据规模,选择排序都是O(n^2)
的时间复杂度,所以样本长度越小越好;唯一好处就是不占用额外空间
# 算法
第一次循环找到前arr.length
个元素中的最小值,将其与arr[0]
交换,使第一个元素为最小值
第二次循环找到后arr.length-1
个元素中的最小值,将其与arr[1]
交换,是第二个元素为次小值
依次循环。。。
function selectionSort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
let minIndex = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[minIndex] > arr[j]) {
minIndex = j;
}
}
[arr[i], arr[minIndex]] = [arr[minIndex], arr[i]];
}
return arr;
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12