我可以计算小于大O(n)的数字中位数

时间:2018-06-04 06:46:07

标签: time-complexity median

我想计算运行序列的中位数小于O(n)。如果在python中更好。感谢。

1 个答案:

答案 0 :(得分:1)

如果你想找到真正的中位数,那么就没有办法比O(n)(在非结构化数组中)更快 - 因为你必须经历所有数字。您永远不知道您找到的最后一个号码是否为中位数。

对于某些alghoritms,有启发式用于查找中位数,这意味着你没有得到准确的中位数,但你有一些方法如何得到(有一些概率)接近真实的中位数。

例如,quicksort需要一些中值,但是通过整个数组会将平均复杂度提高到O(n^2)(使用quicksort的原因是它的平均复杂度为O(n*log n)。在这种情况下,例如,您可以选择10个随机数并计算它们的中位数。然后您可以说实际中位数可能大约是这个值。