1. 选择数组中最小值,放在第 1 位
  2. 选择数组中第 2 小值,放在第 2 位
  3. 选择数组中第 n 小值,放在第 n 位
  4. 时间复杂度 O(n^2),空间复杂度 O(1)

    代码核心逻辑

  5. 两层 for 循环

  6. 第 1 层 for 循环代表比较的第几轮 i,i 从 0 开始,i < arr.length - 1,(最多比较 arr.length - 2 轮,剩下最后 1 个不用比较)
  7. 第 2 层 for 循环是待比较的元素下标 j,从下标为 i + 1 的元素依次比较,选出最小值(比较 1 轮,前面排好 1 个,所以从下标为 i + 1 的元素开始比较)
  8. 将最小值放在 i 的位置

    代码

    ```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) {

    1. minValue = arr[j];
    2. 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 ```