假设X
个n
元素的随机进程X={x1,...,xn}
。
对于给定的概率p
,相应的分位数通过分位数函数Q
确定,定义为:
Q(p)={x|Pr(X<=x)=p}
找到给定概率p
的分位数的时间复杂度是什么?
答案 0 :(得分:1)
Quickselect可以使用中位数枢轴选择的中位数来获得O(n)最坏情况运行时来选择第k顺序统计量。这似乎或多或少是你所追求的,除非我误解(你想要(n * p)&#39;最小的元素。)
在一般情况下,你不可能改进这一点:你必须至少看一下整个数组,否则你没有看到的元素可能就是你需要的答案。
因此,Quickselect在最坏的情况下理论上是最佳的。注意:此透视选择策略具有不良常量,并且在实践中不使用。在实践中,使用随机枢轴选择可以提供良好的预期性能,但O(n ^ 2)最坏情况。