STL排序与中位数的中位数

时间:2010-09-18 03:16:32

标签: algorithm

std :: sort()使用在快速和快速之间切换的Introsort algorithm 。堆排序取决于当前的分区比率。

实施Median-of-Medians Quicksort代替Introsort是否存在实际缺点?毕竟,理论上很难对排序算法的混合进行建模。计算它们最坏的情况 - 尽管我假设Introsort是O(N log N)。

2 个答案:

答案 0 :(得分:2)

请参阅Musser关于Introsort的原始论文。基本上,虽然Medians of Medians和Introsort是渐近相同的,但是Introsort每个项目的工作量不那么稳定,并且通常更快。本文确实提到中位数中位数可以作为后备排序而不是堆排序。

David R. Musser。内省的排序和选择算法。 [Postscript version]

答案 1 :(得分:0)

从我记忆中来看,Quicksort对已排序或​​非常接近排序的集合表现不佳 - O(n ^ 2)。查看维基百科在Introsort上的页面 - 在Introsort vs. Quicksort上有一个引人注目的统计数据。