# 排序算法可视化 - 冒泡、快排、归并、堆排序动画演示

> 在线排序算法动画：冒泡、选择、插入、希尔、归并、快排、堆、计数、基数、桶、Timsort 等 14 种，比较/交换高亮、单步执行、计数统计，多算法同屏赛跑。

- 网址: https://qilingtools.com/zh/sorting-visualizer
- 分类: 开发工具 (https://qilingtools.com/zh/dev)
- 标签: [学习教育](https://qilingtools.com/zh/tags/education), [图表可视化](https://qilingtools.com/zh/tags/chart), [开发](https://qilingtools.com/zh/tags/dev), [算法](https://qilingtools.com/zh/tags/algorithm)
- 最后更新: 2026-10-26
- 价格: 免费，无需注册
- 隐私: 在浏览器本地处理，文件不上传服务器

用柱状图动画直观理解排序算法。内置 14 种算法：冒泡、鸡尾酒、梳排序、选择、插入、希尔（Ciura 间隔）、归并、快速排序（Lomuto 与 Hoare 两种分区）、堆排序、计数排序、LSD 基数排序、桶排序和简化版 Timsort。每个算法都写成生成器，每做一次比较、交换或写入就产生一个事件，动画按事件逐一重放，所以看到的每一步都和真实代码完全一致：黄色表示正在比较，红色表示交换或写入，蓝色表示读取，排完后绿色扫过。可以调节数组大小（最多 1000 个元素）、输入数据（随机、已排序、逆序、基本有序、少量不同值）和播放速度，也能暂停后单步执行；面板实时统计比较次数、交换次数、写入次数和总步数。开启声音后，音高随当前元素的数值变化，能“听”出算法的节奏。赛跑模式让 2～4 个算法在同一份数据上同时运行，按完成顺序排名，直观对比 O(n²) 与 O(n log n) 的差距，以及快排在少量不同值时的表现。页面下方附有各算法最好、平均、最坏时间复杂度、额外空间和稳定性的对照表。

## 使用步骤

1. 选择算法（或切换到赛跑模式选 2～4 个算法），设置数组大小和输入数据
2. 点击播放观看动画，调节速度，或暂停后单步执行
3. 对比比较 / 交换 / 写入次数和完成顺序，查看下方复杂度表

## 功能特点

- 14 种排序算法：冒泡、插入、希尔、归并、快排（Lomuto/Hoare）、堆、计数、基数、桶、Timsort 等
- 比较、交换、写入、读取分色高亮
- 比较次数、交换次数、写入次数实时统计
- 数组大小、5 种输入分布、播放速度可调，支持单步
- 2～4 个算法同屏赛跑并排名
- 可选声音：音高对应元素数值
- 时间 / 空间复杂度与稳定性对照表
- 算法以生成器实现，动画与真实执行逐步一致

## 常见问题

### 哪种排序算法最快？

没有在所有情况下都最快的算法。对随机数据，快速排序、归并排序和堆排序都是 O(n log n)，其中快排的常数最小，通常最快；对基本有序的数据，插入排序和 Timsort 接近 O(n)；值域较小的整数用计数排序或基数排序可以做到线性时间。可以在赛跑模式里换不同的输入数据，亲眼看看它们的差别。

### Lomuto 和 Hoare 两种快排分区有什么区别？

Lomuto 分区以末尾元素为基准，从左到右扫描，把小于基准的元素依次交换到前面，写法简单但交换次数较多，遇到大量重复值时容易退化。Hoare 分区用左右两个指针相向扫描，遇到逆序对才交换，交换次数通常不到 Lomuto 的一半，对重复值也更稳健。本工具的 Lomuto 版本用了三数取中，避免已排序输入退化成 O(n²)。

### 什么是稳定排序？

稳定排序保证相等的元素在排序后保持原来的先后顺序。比如先按姓名排好的名单再按成绩做稳定排序，同分的人仍然按姓名排列。归并、插入、冒泡、计数、基数和 Timsort 是稳定的；快速排序、堆排序、选择排序和希尔排序不稳定。

### 为什么计数排序和基数排序的比较次数是 0？

它们不是靠两两比较来排序的：计数排序统计每个值出现了多少次再按顺序写回，基数排序按个位、十位……逐位分桶。因此它们不受基于比较的排序 Ω(n log n) 下界的限制，在值域或位数不大时能达到线性时间，代价是额外的内存和读写次数，这些都显示在统计里。

## 相关工具

- [JSON 格式化](https://qilingtools.com/zh/json): 免费在线 JSON 格式化：一键美化、压缩，实时语法校验并定位到出错行列，支持树形视图折叠、键名排序、转义与去转义、Unicode 转中文、复制下载，数据不上传。
- [Base64 编解码](https://qilingtools.com/zh/base64): 免费在线 Base64 编码解码工具：支持中文 UTF-8、URL 安全变体，文本与 Base64 互转，实时转换，本地处理不上传。
- [URL 编解码](https://qilingtools.com/zh/url-encode): 免费在线 URL 编码解码工具：encodeURIComponent 与 encodeURI 两种模式，处理中文、空格与特殊符号，本地实时转换不上传。
- [JWT 解析](https://qilingtools.com/zh/jwt): 免费在线 JWT 解析工具：解码 JWT 的 Header 与 Payload，展示过期时间、签发时间等，本地解析不上传，保护令牌安全。
- [时间戳转换](https://qilingtools.com/zh/timestamp): 免费在线 Unix 时间戳转换工具：时间戳与日期互转，自动识别秒/毫秒，显示本地时间、UTC、ISO 8601 和相对时间，实时更新。
- [哈希计算](https://qilingtools.com/zh/hash): 免费在线哈希/摘要计算工具：对文本或文件计算 SHA-1、SHA-256、SHA-384、SHA-512，使用浏览器加密接口本地完成，文件不上传。
- [UUID 生成](https://qilingtools.com/zh/uuid): 免费在线 UUID 生成器：使用加密安全随机数批量生成符合 RFC 4122 的 UUID v4，可大写、去连字符、加花括号，一键复制。
- [进制转换](https://qilingtools.com/zh/base-convert): 免费在线进制转换工具：二进制、八进制、十进制、十六进制及任意 2–36 进制互转，支持大整数（BigInt），本地实时计算。
