鉴于磁盘上有一万亿个实数...
你如何计算跑步? 每千个条目的MEDIAN,即
第一点是中位数 a [0],....,a [999],
第二点是中位数 a [1],...,a [1000],
第三点是中位数 a [2],...,a [1001]等?
答案 0 :(得分:1)
天真的解决方案实际上并没有那么糟糕,在内存中保留一个1000个数字的排序列表,每次你跳到下一个索引时从排序列表中删除a[i-1]
并添加a[i+999]
到排序清单。
一旦你有了这个,就可以很容易地计算排序列表中的中位数。
问题是你如何做得更好?
答案 1 :(得分:0)
提示:维护一个最大堆,它存储1000个数字中最小的500个,并保持存储最大500个的最小堆。