您的位置:首页 > 理论基础 > 数据结构算法

风筝数据结构学习笔记系列(4)各种内排序方法的比较和选择

2012-02-24 18:58 253 查看
摘自《数据结构教程》(第三版)李春葆等编著 清华大学出版社 P296

排序方法平均情况最坏情况最好情况空间复杂度稳定性复杂性
直接插入排序O(n2)

O(n2)O(n)O(1)稳定简单
希尔排序O(n1.3)O(1)不稳定较复杂
冒泡排序O(n2)O(n2)O(n)O(1)稳定简单
快速排序O(nlog2n)O(n2)O(nlog2n)O(log2n)不稳定较复杂
直接选择排序O(n2)O(n2)O(n2)O(1)不稳定简单
堆排序O(nlog2n)O(nlog2n)O(nlog2n)O(1)不稳定较复杂
归并排序O(nlog2n)O(nlog2n)O(nlog2n)O(n)稳定较复杂
基数排序O(d(n+r))O(d(n+r))O(d(n+r))O(r)稳定较复杂
因为不同的排序方法适应不同的应用环境和要求,所以选择合适的排序方法应综合考虑下列因素:

(1)待排序的记录数目n(问题规模);

(2)记录的大小(每个记录的规模);

(3)关键字的结构及初始状态;

(4)对稳定性的要求;

(5)语言工具的条件;

(6)存储结构;

(7)时间和辅助空间复杂度等。

没有哪一种排序方法是绝对好的。每一种排序方法都有其优点,适合于不同的环境。因此,在实际应用中,应根据具体情况做选择。

首先考虑排序对稳定性的要求,若要求稳定,则只能在稳定方法中选取,否则可以在所有方法中选取;

其次要考虑待排序结点数n的大小,若n较大,则可在改进方法中选取,否则在简单方法中选取;

然后再考虑其他因素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: