Bubble Sort
冒泡排序
排序入门时间 O(n²)空间 O(1)
反复比较相邻元素,大的往后冒。每轮把当前最大值送到右端。
动画
7
2
9
4
1
8
5
3
冒泡排序:相邻比较,大的往后冒。
1 / 51
- 默认
讲解
最容易演示交换与有序区的入门排序,帮助建立「比较排序」的直觉。
- 01从左到右比较 a[i] 与 a[i+1],逆序则交换。
- 02一轮结束后,最大元素沉到末尾,有序区扩大一格。
- 03若整轮没有交换,提前结束。
易错点
- 教学用途为主,实际几乎不用。
- 忘记缩小无序区会导致重复比较已排好的尾部。
代码
function bubbleSort(a) {
for (let end = a.length - class="text-accent">1; end > class="text-accent">0; end--) {
let swapped = false;
for (let i = class="text-accent">0; i < end; i++) {
if (a[i] > a[i + class="text-accent">1]) {
[a[i], a[i + class="text-accent">1]] = [a[i + class="text-accent">1], a[i]];
swapped = true;
}
}
if (!swapped) break;
}
return a;
}