# 冒泡排序(稳定)

时间复杂度:O(n²)

# 思想

  1. 比较相邻的元素。如果顺序错误就交换这两个
  2. 对每一对相邻元素做同样的动作,从 开始第一对 到 结尾的最后一对。第一次遍历完后,最后的元素是最大的
  3. 针对所有元素重复以上步骤(除了最后一个)
  4. 持续每次对越来越少的元素重复上面的步骤,知道没有任何一对元素可以比较。
const bubbleSort = list => {
    // `i` 代表轮次
    for (let i = 0; i < list.length; i++) {
        // `j` 代表 每次都重头遍历待排数组 的下标
        // 注意: `j < list.length -1 - i` 是为了保证后面有数和他比较;-i 表示最后已排好了 i 个
        for (let j = 0; j < list.length - 1 - i; j++) {
            // 依次比较 `j`、`j+1` 两个元素:如果顺序错误就交换。
            if (list[j] > list[j + 1]) {
                [list[j], list[j + 1]] = [list[j + 1], list[j]]
            }
        }
    }
    return list;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
-->
更新时间: 11/21/2021, 2:45:24 AM