冒泡排序可视化

冒泡排序的核心:相邻元素两两比较,逆序则交换;每一轮把当前最大值”冒泡”到末端。

下面是一个用 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²)。