SOURCE

// 思路
// 形似冒泡排序 由两层循环组成
// 外层用来固定里层遍历的起始点 并且交换元素位置
// 里层找最小/大元素

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]
console 命令行工具 X clear

                    
>
console