冒泡排序可视化
冒泡排序的核心:相邻元素两两比较,逆序则交换;每一轮把当前最大值”冒泡”到末端。
下面是一个用 d3.js 实现的交互式演示。点击 开始 观察排序过程,或点 重置 重新生成数组。
复杂度
- 时间复杂度:最坏 / 平均 O(n²),最好 O(n)(已排好时一遍扫过即返回,需加优化标志)
- 空间复杂度:O(1)
- 稳定性:稳定(相等元素不交换)
实现要点
def bubble_sort(arr):
n = len(arr)
for i in range(n - 1):
swapped = False
for j in range(n - 1 - i):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swapped = True
if not swapped:
break # 已有序,提前退出
return arr早退优化(
swapped标志)能让最好情况降到 O(n),但平均依然 O(n²)。