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