# 冒泡排序(不稳定)

时间复杂度:O(n²)

# 思想

i 代表轮次,j 代表 每次都重头遍历待排数组 的下标。依次比较 jj+1 两个元素。如果顺序错误就交换。

const bubbleSort = arr => {
    let len = arr.length;

    for (let i = 0; i < len; i++) {
        for (let j = 0; j < len - 1 - i; j++) { // 注意此处 -1是保证后面有数和他比较,-i表示最后已排好了 i 个
            if (arr[j] > arr[j + 1]) {
                [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
            }
        }
    }
    return arr;
}
1
2
3
4
5
6
7
8
9
10
11
12

# 具体步骤

例子:[1, 9, 7, 6]

  • 一共比较3
  • 1轮开始
  • 通过两两比较,把符合条件的交换位置
    • 1和9比,不换;
    • 9和7比,换。【此时1, 7, 9, 6】
    • 9和6比,换。【此时1, 7, 6, 9】
  • 1轮结束
更新时间: 4/18/2020, 11:41:46 PM