本文讨论几个常见排序算法的性能。先给出他们的性能比较。以方便进一步的学习。
各种排序算性能比较:
排序分类 |
排序名称 |
时间复杂度 |
辅助空间 |
稳定性 |
简单排序 |
直接插入排序 |
O(n2) |
O(1) |
稳定 |
冒泡排序 |
O(n2) |
O(1) |
稳定 | |
简单选择排序 |
O(n2) |
O(1) |
不稳定 | |
高级排序 |
快速排序 |
O(nlog2n)----O(n2) |
O(log2n) |
不稳定 |
堆排序 |
O(nlog2n) |
O(1) |
不稳定 | |
归并排序 |
O(nlog2n) |
O(n) |
稳定 | |
其他排序 |
Shell排序 |
由增量序列确定 |
O(1) |
不稳定 |
基数排序 |
O(d(2n+r)) |
O((n+r)n) |
稳定 |
- 从时间性能而言,一般认为快速排序最佳。但快速排序在最坏情况下的时间性能不如堆排序和归并排序。对于基数排序,如果n值很大而关键字较小,基数排序的速度最快。
- 从稳定性而言,一般简单排序算法是稳定的,高级排序不稳定,但也有列外。如上表所示。还有,所有选择排序都是不稳定的。