我想计算运行序列的中位数小于O(n)。如果在python中更好。感谢。
答案 0 :(得分:1)
如果你想找到真正的中位数,那么就没有办法比O(n)
(在非结构化数组中)更快 - 因为你必须经历所有数字。您永远不知道您找到的最后一个号码是否为中位数。
对于某些alghoritms,有启发式用于查找中位数,这意味着你没有得到准确的中位数,但你有一些方法如何得到(有一些概率)接近真实的中位数。
例如,quicksort需要一些中值,但是通过整个数组会将平均复杂度提高到O(n^2)
(使用quicksort的原因是它的平均复杂度为O(n*log n)
。在这种情况下,例如,您可以选择10个随机数并计算它们的中位数。然后您可以说实际中位数可能大约是这个值。