本文讨论几个常见排序算法的性能。先给出他们的性能比较。以方便进一步的学习。
各种排序算性能比较:
|
排序分类 |
排序名称 |
时间复杂度 |
辅助空间 |
稳定性 |
|
简单排序 |
直接插入排序 |
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值很大而关键字较小,基数排序的速度最快。
- 从稳定性而言,一般简单排序算法是稳定的,高级排序不稳定,但也有列外。如上表所示。还有,所有选择排序都是不稳定的。
本文探讨了多种排序算法的时间复杂度、辅助空间和稳定性,分析了它们在不同场景下的性能差异,指出快速排序通常被认为最佳,但在最坏情况下不如堆排序和归并排序。基数排序在特定条件下表现最优。
6655

被折叠的 条评论
为什么被折叠?



