排序算法是计算机科学的基础。以下是十种经典排序算法,点击卡片可高亮并在控制台查看简称。
不同算法在时间、空间效率和稳定性上各有优劣。点击表头可按该列排序,点击行可高亮。
算法 | 最坏时间 | 平均时间 | 空间复杂度 | 稳定性 | 适用场景 |
---|---|---|---|---|---|
冒泡排序 | O(n²) | O(n²) | O(1) | 稳定 | 小规模数据 |
插入排序 | O(n²) | O(n²) | O(1) | 稳定 | 部分有序数据 |
选择排序 | O(n²) | O(n²) | O(1) | 不稳定 | 内存受限 |
归并排序 | O(n log n) | O(n log n) | O(n) | 稳定 | 大规模, 稳定需求 |
快速排序 | O(n²) | O(n log n) | O(log n) | 不稳定 | 通用, 高效 |
堆排序 | O(n log n) | O(n log n) | O(1) | 不稳定 | 常数空间, Top K |
希尔排序 | O(n^(3/2)) | O(n^(4/3))~O(n^(3/2)) | O(1) | 不稳定 | 中等规模 |
计数排序 | O(n + k) | O(n + k) | O(k) | 稳定 | 范围有限整数 |
基数排序 | O(d(n + k)) | O(d(n + k)) | O(n + k) | 稳定 | 整数/字符串 |
桶排序 | O(n²) | O(n + k) | O(n + k) | 稳定 | 均匀分布数据 |
注:n=数据规模, k=桶/范围, d=位数。时间复杂度为近似值。
直观感受不同时间复杂度随数据规模 (n) 增长的速度。点击图例可切换曲线显示。
没有绝对最优的算法,选择需结合具体需求:数据量、是否有序、稳定性要求、内存限制等。
推荐:插入排序、冒泡排序 (优化版)
推荐:快速排序、堆排序
推荐:归并排序、计数排序、基数排序、桶排序
检验你对排序算法基础知识的掌握程度。
判断下列关于排序算法描述的对错。
通过分析代码片段,加深对算法实现细节的理解。
排序算法的世界远不止于此,了解一些高级概念和实际应用。
结合多种排序算法优点,在不同情况下切换策略。
处理超大规模数据集。
各语言标准库通常提供高度优化的排序函数。
了解库函数背后的实现,有助于更好地选择和使用它们。
排序算法是计算机科学的基石,持续学习和实践是掌握的关键!