// 思路
// 形似冒泡排序 由两层循环组成
// 外层用来固定里层遍历的起始点 并且交换元素位置
// 里层找最小/大元素
function fn(list) {
// 移动的是起始位置 所以循环终止条件都是数组末尾
for (let j = 0; j < list.length; j++) {
// 先设起始位置为最小值
let minIndex = j
for (let k = j + 1; k < list.length; k++) {
if (list[minIndex] > list[k]) {
// 找到更小的 更新索引
minIndex = k
}
}
// 里层循环遍历完 找到移动起始点到数组末尾的最小值 交换
[list[j], list[minIndex]] = [list[minIndex], list[j]]
}
}
// 验证
let list = [64, 25, 12, 22, 11]
fn(list)
console.log('选择排序:' + list) // [11,12,22,25,64]