我可以计算小于 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个随机数,并计算它们的中位数。那么你可以说真正的中位数大概就是这个值。
我想在小于 O(n) 的时间内计算 运行 序列的中值。如果在 python 中更好。谢谢。
如果你想找到真正的中位数,没有比 O(n)
(在非结构化数组中)更快的方法了——因为你必须遍历所有数字。你永远不知道你找到的最后一个数字是否是中位数。
对于某些算法,有用于查找中位数的启发式方法,这意味着您无法获得准确的中位数,但您有一些方法可以(以某种概率)接近真实中位数。
例如,快速排序需要一些中值,但遍历整个数组会将平均复杂度增加到 O(n^2)
(使用快速排序的原因是它的平均复杂度为 O(n*log n)
。在这样的情况下例如,你可以选择10个随机数,并计算它们的中位数。那么你可以说真正的中位数大概就是这个值。