十大基础排序算法及其性能分析总结
(一)算法分类
比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。
(二)算法性能
其中:
n:数据规模
m:桶的数量
k:数据范围
In-place:占用常数内存,不占用额外内存
Out-place:占用额外内存
稳定性:排序后 2 个相等键值的顺序和排序之前它们的顺序相同
(三)详细解析
- 冒泡排序(动图演示)
- 选择排序(动图演示)
- 插入排序(动图演示)
- 希尔排序(动图演示)
- 快速排序(动图演示)
- 归并排序(动图演示)
- 基数排序(动图演示)
- 计数排序(动图演示)
- 桶排序(动图演示)
- 堆排序(动图演示)