排序算法可视化

更多
排序过程
未完成比较写入基准最终位置
比较 0交换 0主数组写入 0辅助写入 0
0 / 0

支持 1~32 个 -999~999 的整数,逗号或空格分隔。编号表示元素原始位置,数组下标从 0 开始。

关键语句随步骤高亮

概述

在线演示冒泡、选择、插入、归并、快速和堆排序,支持自定义数组、升降序、播放暂停、前后单步、代码联动,以及 Python、JavaScript、Java、C、C++、Go 示例代码复制和下载。

输入数组并选择算法,点击“播放”观察排序过程,也可以逐步前进、回退或拖动进度。每个元素附带原始编号,方便观察重复值的相对顺序。

算法主要思路稳定性
冒泡排序比较相邻元素,把目标逐步移向末尾稳定
选择排序每轮选择目标并交换到区间开头不稳定
插入排序暂存 key,移动元素后插入有序前缀稳定
归并排序拆分区间,借助辅助数组稳定合并稳定
快速排序末尾基准的 Lomuto 分区,再递归排序不稳定
堆排序建立堆,反复将堆顶放到最终位置不稳定

代码区可切换 Python、JavaScript、Java、C、C++、Go 和伪代码。六种语言示例包含当前数组与排序方向,可直接复制或下载;关键语句随演示步骤高亮。

聚焦动画区后,空格播放/暂停,左右箭头前后单步,Home/End 跳到开始或结束。手机上图形可横向滚动,代码和说明使用标签切换。

动画由浏览器 JavaScript 驱动,不会执行所选语言代码;操作计数与动画时长不同。稳定性描述对应本工具的具体实现,不稳定算法在某一次输入上也可能保持重复值顺序。