找到给定概率的分位数的时间复杂度

Time complexity of finding the quantile of a given probability

假设随机过程 Xn 个元素:X={x1,...,xn}.

对于给定的概率p,对应的分位数通过分位数函数Q确定,定义为:

Q(p)={x|Pr(X<=x)=p}

找到给定概率的分位数的时间复杂度是多少p

Quickselect 可以使用中位数枢轴的中位数 selection 得到 O(n) 最坏情况运行时间到 select 第 k 阶统计。这似乎或多或少是你所追求的,除非我误解了(你想要第 (n*p) 个最小的元素)。

在一般情况下,您不可能对此进行改进:您必须至少查看整个数组,否则您没有查看的元素可能就是您需要的答案。

因此,Quickselect理论上在最坏情况下是最优的。注意:这个 pivot selection 策略有错误的常量,在实践中没有使用。在实践中,使用随机枢轴 selection 可以提供良好的预期性能,但 O(n^2) 最坏情况。