// 选择排序 O(n²) 的时间复杂度,空间复杂度为常数阶 O(1)
// let arr = [4, 8, 2, 5, 9, 1, 3, 6, 7]
// let arr = [9,8,7,6,5,4,3,2,1]
let arr = [2,3,1,2,1,3,2,1,2]
function selectionsort(arr) {
let indexMin = null
let temp = null
for (let i = 0; i < arr.length; i++) {
//用来保持最小的值的索引位置 可以方便找到 不能是值以后会找不到在if里面
indexMin = i
for (let j = i; j < arr.length; j++) {
//找到最小的值 每次找到最小的值 indexMin = j:比较还有没有更小的
if (arr[j] < arr[indexMin]) {
indexMin = j
}
}
// 最小的值找到了就换位置
temp = arr[i]
arr[i] = arr[indexMin]
arr[indexMin] = temp
}
}
selectionsort(arr)
1. 算法步骤
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
重复第二步,直到所有元素均排序完毕。