- 选择数组中最小值,放在第 1 位
- 选择数组中第 2 小值,放在第 2 位
- 选择数组中第 n 小值,放在第 n 位
-
代码核心逻辑
两层 for 循环
- 第 1 层 for 循环代表比较的第几轮 i,i 从 0 开始,i < arr.length - 1,(最多比较 arr.length - 2 轮,剩下最后 1 个不用比较)
- 第 2 层 for 循环是待比较的元素下标 j,从下标为 i + 1 的元素依次比较,选出最小值(比较 1 轮,前面排好 1 个,所以从下标为 i + 1 的元素开始比较)
-
代码
```javascript function selectionSort(arr) { for (let i = 0; i < arr.length - 1; i++) { // 假设最小值和最小值下标 let minValue = arr[i]; let minIndex = i;
for (let j = i + 1; j < arr.length; j++) { // 找最小值 if (arr[j] < minValue) {
minValue = arr[j];
minIndex = j;
} }
// 交换位置 const temp = arr[i]; arr[i] = minValue; arr[minIndex] = temp; }
return arr; }
const arr = [3, 2, 9, 1, 4, 8, 5, 7, 0, 6];
console.time(); console.log(selectionSort(arr)); console.timeEnd();
// default: 0.281982421875 ms ```