首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

无限数据流中位数有关问题

2012-03-01 
无限数据流中位数问题有一个无限的数据输入流,希望能在任意时刻取出它们的中位数。大家看看有什么好方法?[

无限数据流中位数问题
有一个无限的数据输入流,希望能在任意时刻取出它们的中位数。
大家看看有什么好方法?

[解决办法]
我觉得没有好的办法。
因为通过改变后面的输入,可以要求前面的任意一个数据成为新的中位数。
也就是说,我们必须保存整个输入流才行。

不过实际上的输入流很可能会近似满足某些近似统计规律吧,在这种情况下,我们是否可以认为实际上某些过于边缘的数据按概率几乎不会再成为中位数而不再去保存它们了,而是仅仅在任何时刻保留一定的接近中位数的数据(比如保存最接近中位数的1000个数,小于它的500个,大于它的也500个)。
在任何时刻,我们保留了当前的中位数M以及小于它的最接近的c1个数和大于它的最接近的c2个数。这些数再min_c1和max_c2之间
当然,如果新增加的数不在min_c1和max_c2之间,这会导致可以管理的居于中间的数的实际数目会迅速降低下去到最后无法找到中位数了。
所以这种方案可行性也不高



[解决办法]
如果数据输入流数据没有范围限制,必须保存整个输入流。

热点排行