算法可视化动画
算法可视化动画
把排序和查找的每一步都画出来,可以自动播放,也能一步一步慢慢看。
五个算法
冒泡排序
从头到尾比较相邻两个,大的往后挪。一趟下来最大的一定冒到最后,所以每一趟都能确定一个位置。
比较次数约 n²/2,是最慢的,但最好懂。
选择排序
每一趟在还没排好的部分里找最小的,跟这趟开头那个交换。
比较次数也是 n²/2,但交换次数只有 n 次,比冒泡少很多。
插入排序
像抓扑克牌:拿到一张就往前插到合适位置,前面的比它大就往后挪一格。
数据本来就比较有序时特别快,最好情况是 n 次比较。
快速排序
选一个基准(这里选每段最后一个),比它小的放左边、大的放右边,基准归位,然后左右两边各自再排。
平均 n log n,是最快的;可视化里你会看到递归的区间一层一层缩小。
二分查找
数组必须有序。每次看中间那个,一眼排除掉一半。 20 个数最多看 5 次,100 万个数也只要看 20 次。
怎么玩
- 选算法 → 拖「个数」滑杆(8 ~ 40)→ 点「🎲 换一组数据」
- 点「▶ 自动播放」看整段动画,速度可以调到 1 ~ 40 步/秒
- 点「⏭ 单步」一步一步走,每步下面都有中文解释在干嘛
- 「⏮ 上一步」可以倒回去重看
- 二分查找可以自己指定「要找的数」,试试填一个数组里没有的数
颜色含义
| 颜色 | 意思 |
|---|---|
| 浅蓝 | 普通 |
| 橙色 | 正在比较 |
| 红色 | 正在交换 |
| 紫色 | 基准(快排)/ 正在查看的位置(二分) |
| 绿色 | 已经归位 |
| 灰色 | 不在当前处理的范围里 |
自定义数据
右边输入框可以填自己的数据,比如 5,3,8,1,9,2,点「用我填的数据」就按这组来跑。
同一组数据换不同算法跑,对比一下右上角的比较次数 / 交换次数,差别很直观。
小贴士
- 想看清楚就选 8 ~ 12 个数,格子大、数字也看得见
- 想看规模差异就选 40 个数,泡泡排序会明显比快排慢一大截
- 快速排序的递归过程最容易看懵,建议先用单步走一遍
jhp.studio