能否通过修改O(n2)
将快速排序的最坏情况下的时间复杂度从O(nlogn)
更改为(without converting it to mergsort)
?
答案 0 :(得分:0)
通常,如果递归或分区拆分的数量太大,则切换到堆排序,可以避免最坏的情况,因为堆排序也已存在。
https://en.wikipedia.org/wiki/Introsort
避免最坏情况行为的另一种方法是使用中位数的中位数,尽管它比较慢。
https://en.wikipedia.org/wiki/Median_of_medians
如本文所述,它可以是一种混合快速排序,当递归级别变得过多时,它会切换为中位数。