选择排序可视化工具
以动画方式演示选择排序(Selection Sort),提供逐步执行、速度调节、自定义输入数据、实时的比较/交换计数器以及伪代码展示。完全在浏览器本地运行。
Code examples
Ready-to-copy reference implementations. Free to use in your own projects and assignments.
使用方法
- 1 点击“播放”查看每一轮如何扫描找出最小值并将其交换到正确位置。
- 2 使用“单步”按逐次比较的方式前进,观察算法如何跟踪当前最小值。
- 3 在“自定义输入”框中输入你自己的数字,然后点击“应用”。
- 4 实时查看高亮显示的伪代码,以及比较次数/交换次数的计数器。
为什么使用此工具
- 直观看到每一轮如何选出剩余元素中的最小值并将其放到最前面。
- 发现该算法执行的比较次数始终相同,与输入数据的顺序无关。
- 各项统计数据说明了为什么该算法最多只交换 n−1 次——在写操作成本较高的场景下非常有用。
- 完全在浏览器本地运行,无需注册,无需上传数据。
常见问题
什么是选择排序?
选择排序将数组分为两部分:已排序区域和未排序区域。每一轮都会扫描未排序部分找出最小值,然后将其交换到已排序边界处。
选择排序的时间复杂度是多少?
在所有情况下(最好、平均和最坏)都是 O(n²),因为查找最小值的扫描过程始终需要遍历所有剩余元素。
选择排序是稳定的吗?
不稳定。将最小值跨越较远距离进行交换,可能导致某个元素越过与其值相同的另一个元素,从而改变它们的相对顺序。不过,基于链表的变体可以做到稳定。
选择排序在什么情况下有用?
当需要尽量减少写操作次数时非常有用——该算法最多只执行 n−1 次交换,远少于冒泡排序。除此之外的情况,通常更推荐使用插入排序。
什么是 选择排序可视化工具?
选择排序可视化工具演示了选择排序算法如何在未排序区域中不断查找最小值,然后将其交换到已排序边界。该工具直观展示了为什么该算法总是需要 O(n²) 次比较,但交换次数最多只有 n−1 次。
功能特性
逐步动画
观看每一轮中最小元素被找到并交换到前面的过程。
复杂度
时间复杂度:所有情况下均为 O(n²)。空间复杂度:O(1)。原地排序;不稳定。仅需 O(n) 次交换。
100% 隐私保护
完全在你的浏览器中运行——不会上传任何数据。
示例
Input
[64, 25, 12, 22]
Output
select 12 → [12,25,64,22]; 22 → [12,22,64,25]; 25 → [12,22,25,64] (sorted)
常见使用场景
-
1
学习选择逻辑
了解为何比较次数始终固定在约 n²/2,与输入无关。
-
2
最小化写入次数
理解在交换/写入成本较高时选择排序的优势所在。
-
3
与插入排序对比
将其固定的 O(n²) 与插入排序最佳情况下的 O(n) 进行比较。
Zerethon 的选择排序可视化工具在浏览器中动态演示该算法,不断从未排序区域中选出最小元素并将其交换到正确位置。选择排序始终以 O(n²) 时间运行(最好、平均和最坏情况完全相同),额外空间为 O(1);它是原地排序但不稳定。它将交换次数降至最少(O(n))。
- 分类
- 算法
- 价格
- 免费
- 隐私
- 基于浏览器
- 注册
- 无需
参考资料
- MIT OCW 6.006——算法导论(CLRS) — MIT OpenCourseWare
- VisuAlgo——排序 — VisuAlgo (NUS)
- 选择排序 — 维基百科
隐私
除非另有说明,否则你的数据永远不会离开浏览器。选择排序可视化工具 完全在客户端运行 — 无需上传服务器,不记录日志,不追踪你输入的内容。
刚接触?阅读包含 Big-O 分析的分步讲解: 了解 Sorting Algorithms →
在 Zerethon Social 上创作、分享与成长
免费注册。赚取积分,收集成就,与全球创作者建立联系。