关于求nos中位数的算法问题

时间:2011-06-10 05:01:34

标签: algorithm

鉴于磁盘上有一万亿个实数...

  

你如何计算跑步?   每千个条目的MEDIAN,即

     

第一点是中位数   a [0],....,a [999],

     

第二点是中位数   a [1],...,a [1000],

     

第三点是中位数   a [2],...,a [1001]等?

2 个答案:

答案 0 :(得分:1)

天真的解决方案实际上并没有那么糟糕,在内存中保留一个1000个数字的排序列表,每次你跳到下一个索引时从排序列表中删除a[i-1]并添加a[i+999]到排序清单。

一旦你有了这个,就可以很容易地计算排序列表中的中位数。

问题是你如何做得更好?

答案 1 :(得分:0)

提示:维护一个最大堆,它存储1000个数字中最小的500个,并保持存储最大500个的最小堆。