这三个算法的理论时间复杂度都是nlogn,但是区别还是很大的。
这三个算法里,实际效率最低的是堆排序,因为在每次调整大根堆的时候,都把底层元素交换到了根,然后再调整,而底层元素又不可能大于原根元素的两个孩子节点,因此非等概率调整,做了很多次无效交换,因此实际效率最低。
归并排序时间效率最高,并且稳定,因为归并排序每次都把序列二等分,做等概率划分,最后继续划分,这样就能达到最优划分策略,即logn次划分,每个元素最多进行logn次比较,n个元素也就是nlogn,并且在合并的时候不破坏现有顺序,因此是稳定排序,但由于借助了logn个递归栈和n个临时存储空间,因此他的可适用性反而不如快排。
快排效率上是不如归并的,而且不稳定,但是思想和归并一样,都是对序列不断做划分,然后排序,划分策略未必就是最优划分策略,但是可以让他接近最优划分策略,这就涉及到了一个选择枢纽元的问题,比较常见的方法是用三数中值法,并且由于是就地排序,不许靠考虑额外空间开销,因此快排是综合最好的排序算法。
本文深入探讨了三种常见排序算法:堆排序、归并排序与快速排序的理论时间复杂度及实际效率差异。特别强调了堆排序因非等概率调整导致的低效,归并排序的高效率与稳定性,以及快速排序在综合表现上的优势,特别是其接近最优划分策略的思想。此外,文章还讨论了它们各自的特点,如空间复杂度、稳定性等。

2227

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



