游乐场
本局目标
比较算法如何把数组变成有序。
操作提示
选择算法、速度和数据量后开始。
下一枚徽章
完成多算法对比,点亮排序专家目标。
排序可视化 · 算法竞赛场
观察不同排序算法如何一步步将混乱变为有序。
0比较
0交换
0ms
默认
比较中
交换中
已排序
枢轴
排序算法一览
排序是计算机科学最基础的操作之一。不同算法在时间复杂度、稳定性和适用场景上各有优劣。
冒泡排序 · Bubble Sort
反复比较相邻元素,若顺序错误则交换。每轮将最大值「冒泡」到末尾。时间 O(n²),稳定排序。
选择排序 · Selection Sort
每轮从未排序部分找到最小元素,放到已排序部分末尾。时间 O(n²),不稳定。
插入排序 · Insertion Sort
将每个元素插入到前方已排序部分的正确位置,类似整理扑克牌。时间 O(n²),对近乎有序的数据很高效,稳定。
归并排序 · Merge Sort
分治策略:将数组一分为二,递归排序后合并。时间 O(n log n),稳定,但需要额外空间。
快速排序 · Quick Sort
选择一个枢轴(pivot),将数组分为小于和大于枢轴的两部分,递归排序。平均 O(n log n),最坏 O(n²),不稳定但实际运行极快。
颜色含义
- 蓝色 — 默认状态,尚未被访问
- 黄色 — 正在比较的元素
- 红色 — 正在交换的元素
- 绿色 — 已经排好序的元素
- 紫色 — 枢轴元素(快速排序/选择排序)
为什么 O(n log n) 重要?
当数据量 n 从 100 增长到 10,000 时,O(n²) 算法的操作次数从 10,000 增长到 100,000,000(一亿),而 O(n log n) 只从约 664 增长到约 133,000。规模越大,差距越悬殊——这就是算法效率的力量。
试一试
- 选择冒泡排序和快速排序分别运行 100 个元素,对比比较和交换次数。
- 调整速度为「慢」,仔细观察每一步的比较与交换过程。
- 尝试不同数组大小,感受 O(n²) 和 O(n log n) 的差距。