# 冒泡排序(稳定)
时间复杂度:O(n²)
# 思想
- 比较相邻的元素。如果顺序错误就交换这两个
- 对每一对相邻元素做同样的动作,从 开始第一对 到 结尾的最后一对。第一次遍历完后,最后的元素是最大的
- 针对所有元素重复以上步骤(除了最后一个)
- 持续每次对越来越少的元素重复上面的步骤,知道没有任何一对元素可以比较。
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
2
3
4
5
6
7
8
9
10
11
12
13
14