# 冒泡排序(不稳定)
时间复杂度:O(n²)
# 思想
i
代表轮次,j
代表 每次都重头遍历待排数组 的下标。依次比较 j
、j+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
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
轮结束