C语言:若原始记录接近正序或反序,则选用堆排序,若初始记录无序则最好选用快速排序。这是为什么?

如题所述

1,堆排序的性能:时间复杂度总是Nlogn(N) 的。

2,快速排序不属于原地排序,由于程序中使用了递归,需要递归调用栈的支持,而栈的长度取决于递归调用的深度。在平均情况下,需要O(logn) 的栈空间;最坏情况下,栈空间可达O(n) 。
1 )划分元素的选取是影响时间性能的关键。
2 )输入数据次序越乱,所选划分元素值的随机性越好,排序速度越快。快速排序不是自然排序方法。
3 )改变划分元素的选取方法,至多只能改变算法平均情况下的时间性能,无法改变最坏情况下的时间性能。即最坏情况下,快速排序的时间复杂性总是O(n 2 )。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-17
两者时间复杂度一样,这样就看移动次数,第一种情况移动次数 堆排序明显比快速排序法少。
相似回答