1. 比较相邻元素,如果第 1 个比第 2 个元素大,交换它们
  2. 一轮下来,可以保证最后 1 个元素是最大的
  3. 比较 arr.length - 1 轮,大的往后冒,完成排序
  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,从下标 0 的元素依次和相邻元素比较,下标 < arr.length - 1 - i (因为比较 1 轮,后面排好 1 个元素,待比较的元素最大下标是 arr.length - 1 - i )

    代码

    ```javascript function bubbleSort(arr) { for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - 1 - i; j++) {

    1. if (arr[j] > arr[j + 1]) {
    2. const temp = arr[j];
    3. arr[j] = arr[j + 1];
    4. arr[j + 1] = temp;
    5. }

    } }

    return arr; }

const arr = [3, 2, 9, 1, 4, 8, 5, 7, 0, 6];

console.time(); console.log(bubbleSort(arr)); console.timeEnd();

// default: 0.293212890625 ms ```