algorithm - 从流中查找运行介质

标签 algorithm median

问题:假定整数是从数据流中读取的。以有效的方式查找到目前为止读取的元素的中值。

我找到了解决方案 here

我的问题是为什么我们需要使用堆而不是简单地将数字添加到向量中?

例如,假设我们使用向量来存储传入的数据,那么我们调用方法来计算中位数,如下所示:

if vector size is even
   return (element at size/2 + element at size/2-1);
else
   return (element at size/2);

上述解决方案行得通吗?

最佳答案

如果向量中的元素顺序不对,您的解决方案将无法工作。如果你在向量的末尾添加元素,它们将不会按顺序排列。

另一方面,堆中的元素是有序的。

此外,第一个 return 语句中缺少除以二的部分。

关于algorithm - 从流中查找运行介质,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33225985/

相关文章:

python - 如何根据键合并两个元组列表?

arrays - 查找代码的时间复杂度

c++ - 算法 - 关于序列中位数的许多查询

c - 优化递归计数算法

c++ - 在计算列表中获取前 n 项的最快方法是什么?

algorithm - 粒子群优化算法中的维度

matlab - 中值滤波器与 matlab 中的伪中值滤波器

r - 在给定另一列中相应的连续值相等的情况下,在一列中查找值的中位数

python - 中位数代码解释

随着时间的推移构建子集的滚动中位数