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

标签 algorithm time-complexity computer-science complexity-theory quantile

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

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

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

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

最佳答案

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

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

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

关于algorithm - 找到给定概率的分位数的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48431410/

相关文章:

python - Python 中的 QM 编码实现 - 16 位字是强制性的吗?

algorithm - 您如何使用为加权综合评分中的特征分配权重?

c++ - 根据键的类型选择 map 或 unordered_map

algorithm - 这个算法的空间复杂度是多少?

big-o - 以下代码的时间复杂度(大 O 表示法)?

javascript - immutable.js 中的 .equals() 有多复杂

java - 给定一堆整数,请仅使用加号运算输出所有可能数字的所有组合

algorithm - 我需要帮助来验证我的答案。分析函数的运行时间

computer-science - 熵的计算机科学定义是什么?

algorithm - "hill climbing"和 "branch-and-bound"搜索算法有什么区别?