如果中位数算法不会改变快速排序的平均大小写复杂度,为什么要使用它?



鉴于排序算法的平均案例复杂度 Omega(n*lg(n)) 的硬下限,您何时/为什么决定花时间使用快速排序来实现此选择算法,而不仅仅是使用随机枢轴或数组中的简单 (n/2) 位置?

因为它具有更好的最坏情况时间复杂度。

近似中位数选择算法也可以用作快速排序中的枢轴策略,产生最优算法,最坏情况复杂度为 O(n log n)。尽管这种方法优化得很好,但在实践中通常通过选择随机透视表来超越它,随机透视具有用于选择的平均线性时间和用于排序的平均对数线性时间,并避免了计算透视的开销。混合内选算法使用中位数中位数作为回退,以确保最坏情况下的线性性能:内推选择从快速选择开始,以获得良好的平均性能,如果进度太慢,则回退到中位数中位数。

最新更新