考虑到排序算法的平均情况复杂度Omega(n * lg(n))的硬下限,何时/为什么你决定花时间用quicksort实现这个选择算法而不是仅使用随机数据集或只是数组中的简单(n / 2)位置?
答案 0 :(得分:3)
因为它有better worst-case time complexity。
近似中值选择算法也可以用作快速排序中的枢轴策略,产生最优算法,最坏情况复杂度为O(n log n)。尽管这种方法非常好地优化,但在实践中通常通过选择随机枢轴来表现优异,随机枢轴具有用于选择的平均线性时间和用于排序的平均对数线性时间,并且避免了计算枢轴的开销。混合内插选择算法中使用中位数中位数作为后退,以确保最坏情况的线性表现:introselect以quickselect开始,获得良好的平均性能,然后如果进度太慢则回落到中位数的中位数。