首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

排序算法比较次数与初始化顺序的关系,该怎么处理

2012-04-23 
排序算法比较次数与初始化顺序的关系排序算法的性能可以由排序过程中比较次数来衡量。待排序的初始化顺序有

排序算法比较次数与初始化顺序的关系
排序算法的性能可以由排序过程中比较次数来衡量。待排序的初始化顺序有可能影响某个具体排序算法的性能,下面我对常用排序算法的性能与待排数组的循序的关系作一个总结:

1)冒泡:无关;
2)选择:无关;
3)插入:有关,排序程度越大,比较越少;
4)shell:有关,它的基本思想基于插入排序;
5)融合:有关,排序程度愈大,融合过程的比较次数越少;
6)堆排序:有关,排序程度越大,建立堆下沉操作越少;
7)快排序:有关,如果选择最后值作为阀值,那么排序程度越好,就越可能退化成O(n^2);
  无关,随机选择阀值,那么与排序程度无关。

看来除了前面两个比较低级的排序算法无关,后面5个都有关系~~~~

如果有错误,大家一定毫不客气指出:)
相互学习~~~~



[解决办法]

[解决办法]
冒泡有关吧
[解决办法]
所以说冒泡跟初始化顺序有关嘛
[解决办法]
改进的冒泡设置了一个标志,和初始化顺序有关
[解决办法]
冒泡和插入和初始化序列的有序度关系很大,基本逆序的时候,时间复杂度为 O(n^2),基本有序的时候,为 O(n)
shell和初始化序列关系不大,但与你选的 increment sequence 关系大
堆排序很稳定,无论给什么序列,它的时间几乎一样
初级的快排与序列的随机化程度有关,基本顺序或者基本逆序会造成时间复杂度退化为O(n^2),随机为O(nlogn);
改进的快排与初始序列无关。
以上结论可以从算法分析得知,也可以参考实验数据(如《程序员实用算法》表5-2)
[解决办法]
归并排序呢?
[解决办法]
接分
每天回帖即可获得10分可用分!

热点排行