跳到主要内容
Z

堆排序可视化工具

动态演示堆排序算法,支持单步执行、速度调节、自定义输入数据,并实时显示比较/交换计数与伪代码。直接在浏览器中运行。

免费 无需注册 客户端运行 注重隐私 Updated
/
Comparisons: Swaps / writes: Array accesses:

Code examples

Ready-to-copy reference implementations. Free to use in your own projects and assignments.

使用方法

  1. 1 点击 Play 观看数组被构建成最大堆,然后依次取出最大元素。
  2. 2 使用 Step 逐步执行每一次下沉(sift-down)比较。
  3. 3 在 Custom input 中输入自己的数字,然后点击 Apply。
  4. 4 跟随高亮显示的伪代码,实时查看比较/交换计数。

为什么使用此工具

  • 了解数组如何被当作二叉堆处理(父节点位于 i,子节点位于 2i+1 / 2i+2)。
  • 观察每次将最大元素移到末尾后,下沉操作如何恢复堆的性质。
  • 理解堆排序为何能在仅需 O(1) 额外空间的情况下保证 O(n log n) 的时间复杂度。
  • 完全在你的浏览器中运行,无需注册,无需上传文件。

常见问题

什么是堆排序?

堆排序先从数组构建一个最大堆,然后反复将堆顶(最大)元素与末尾元素交换,并执行下沉操作恢复堆的性质,从而从数组右侧逐步扩大已排序区域。

堆排序的时间复杂度是多少?

无论最好、平均还是最坏情况都是 O(n log n)。构建堆需要 O(n) 时间,之后 n 次取出元素的操作每次耗费 O(log n)。

堆排序是稳定排序吗?

不是。堆操作会交换相距较远的元素,这可能改变相等值之间的相对顺序。

堆排序与快速排序相比如何?

堆排序能保证最坏情况下 O(n log n) 的时间复杂度,且只需 O(1) 的额外空间,但由于快速排序具有更好的缓存局部性(cache locality)和更小的常数因子,实际运行中通常更快。

什么是 堆排序可视化工具?

堆排序可视化工具演示了堆排序算法的完整过程:先将数组构建成最大堆,然后反复将堆顶(根节点)元素与末尾元素交换,并执行下沉(sift-down)操作以恢复堆的性质。它直观展示了该算法如何在仅使用 O(1) 额外空间的情况下,保证 O(n log n) 的时间复杂度。

功能特性

逐步动画演示

观察max-heap的构建过程,以及每一步提取并sift-down(下沉调整)的操作。

复杂度

时间复杂度:所有情况下均为O(n log n)。空间复杂度:O(1)。原地排序(in-place);非稳定排序(not stable)。

100% 隐私保护

完全在浏览器本地运行 — 不会上传任何数据。

示例

Input

[4, 10, 3, 5, 1]

Output

build max-heap [10,5,3,4,1]; extract max repeatedly → [1, 3, 4, 5, 10] (sorted)

常见使用场景

  1. 1

    最坏情况下仍为O(n log n)且原地排序

    了解一种无需O(n)额外空间即可保证O(n log n)的排序算法。

  2. 2

    学习堆结构

    通过排序过程理解max-heap(最大堆)和sift-down(下沉调整)。

  3. 3

    与优先队列的关联

    将堆排序与基于binary heap(二叉堆)的优先队列联系起来。

概要

Zerethon 的堆排序可视化工具在浏览器中动画演示该算法:先构建一个max-heap(最大堆),然后反复将最大值提取到数组末尾。堆排序在最好、平均和最坏情况下的时间复杂度均为O(n log n),仅使用O(1)的额外空间;它是in-place(原地)排序,但不是stable(稳定)排序。它兼具归并排序的最坏情况保证与常数级额外空间的优点。

分类
算法
价格
免费
隐私
基于浏览器
注册
无需

参考资料

隐私

除非另有说明,否则你的数据永远不会离开浏览器。堆排序可视化工具 完全在客户端运行 — 无需上传服务器,不记录日志,不追踪你输入的内容。

刚接触?阅读包含 Big-O 分析的分步讲解: 了解 Sorting Algorithms →

对比

相关工具

在 Zerethon Social 上创作、分享与成长

免费注册。赚取积分,收集成就,与全球创作者建立联系。

免费试用 Zerethon