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

Can i calculate the median of numbers in less than Big O(n)

我想在小于 O(n) 的时间内计算 运行 序列的中值。如果在 python 中更好。谢谢。

如果你想找到真正的中位数,没有比 O(n)(在非结构化数组中)更快的方法了——因为你必须遍历所有数字。你永远不知道你找到的最后一个数字是否是中位数。

对于某些算法,有用于查找中位数的启发式方法,这意味着您无法获得准确的中位数,但您有一些方法可以(以某种概率)接近真实中位数。

例如,快速排序需要一些中值,但遍历整个数组会将平均复杂度增加到 O(n^2)(使用快速排序的原因是它的平均复杂度为 O(n*log n)。在这样的情况下例如,你可以选择10个随机数,并计算它们的中位数。那么你可以说真正的中位数大概就是这个值。