R-Select的运行时间与选择的平均情况相比?

时间:2016-10-23 06:26:40

标签: algorithm performance sorting selection clrs

在最坏的情况下,R-select是O(n ^ 2),其中select是O(n)。有人可以在平均情况下解释和对比他们的行为。

P.S。 - 我不确定这是一个重复的问题。我可以删除它的情况!谢谢!

1 个答案:

答案 0 :(得分:0)

通过R-select,我假设你在谈论随机选择算法,它通过选择一个枢轴,在该枢轴上进行分区,然后从那里递归进行。如果情况并非如此,请告诉我!

你是正确的,R选择算法的最坏情况是Θ(n 2 ),但这在实践中极不可能出现。这要求您经常选择一个远离最小值或最大值的恒定数量元素内的枢轴,并且这种情况发生的可能性呈指数级低。 O(n)的平均情况运行时间实际上很可能发生;你可以prove,例如,对于任何常数k,运行时间为O(n log n)的概率至少为1 - 1 / n k

隐藏在R-select的大O符号中的常数项实际上非常低,事实上R-select通常比中位数中值选择算法快得多。事实上,它们有时会结合在一起。 introselect算法通过运行R-select并查看运行时工作,在运行时最终看起来很糟糕的情况下切换到中位数中值选择算法。总运行时间是最坏情况O(n)并且与R-select相当。