![]() |
1
10
您至少需要存储ceil(n/2)个点,因为前n/2个点中的任何一个都可能是中间值。存储点并找到中间值可能是最简单的方法。如果保存ceil(n/2)点是有价值的,那么将前n/2点读入一个排序列表(二叉树可能是最好的),然后在添加新点时抛出低点或高点,并跟踪抛出两端的点数。 编辑: 如果流的长度是未知的,那么很显然,正如斯蒂芬在评论中所观察到的,那么我们别无选择,只能记住所有的事情。如果可能出现重复项,我们可以使用存储值和计数的方法节省一点内存。 |
![]() |
2
2
你可以
|
![]() |
3
1
可能吧
在计算的各个阶段,只要确定中间值不在该顶部或底部范围内,就可以丢弃顶部的“n”和底部的“n”值。
如果值的分布是相当一致的,这将很好地工作。但是,如果有可能在接近结束时收到大量非常高或非常低的值,则可能会扭曲计算。基本上,如果你放弃了一个小于(最终)中值的“高”值,或者一个等于或大于(最终)中值的“低”值,那么你的计算就被取消了。
更新
但是,假设我们得到的前五个数字是1,2,3,4,5
如果我们的数字分布均匀,我们就可以不断地修剪四肢。如果它们可能被聚成许多大的或许多小的数字,那么丢弃它们是有风险的。 |
![]() |
4
1
如果不知道整个数据样本的取值范围,仍然可以估计出中值的可能取值范围,并在此范围内计算直方图。这在本质上降低了异常值,但这正是我们在计算中值时所需要的。 |
![]() |
Edward · 如何计算randomForestSRC中的中位生存率 7 年前 |
![]() |
Ollie · 无法将Null值传递给自定义聚合 7 年前 |
|
Erik B · 有人能帮我解释为什么我不能显示正确的中值吗?[爪哇] 8 年前 |
![]() |
Huanian Zhang · 不含零的运行中值 8 年前 |
![]() |
berserker · 找到坐标中值以构建kd树(2D)-C++ 9 年前 |
![]() |
AKIWEB · 如何获得使用sql对特定列进行分组所花费的平均时间? 10 年前 |