40亿个整数,求上中位数
来源:互联网 发布:nes30 pro软件 编辑:程序博客网 时间:2024/06/05 16:30
40亿个大整数,组成大文件。
想找到其中,上中位数。
内存,10MB,怎么办?
内存,20K,怎么办?
内存,有限的几个字符,怎么办?
条件:按行读文件,这个动作假设不占用内存。
40亿个整数,每个4字节,160亿字节,大约16G。
第一、不要从个数下手,要从范围下手。
如果是无符号整数:0至42亿,则表示1个整数的词频,是不会溢出的。
10MB:
4字节一个数,则最多250万,250万是可以在内存总统计的。
即10MB空间支持250万精细范围,0至42亿上有1680个250万范围。
统计:0-250万;250万-500万;......各个区间内有多少个数
我们要求第20亿个数,则可以在大小为1680的数组中,去做加法,确定第20亿个数的范围,之后精细地去求那个范围中的准确值。
20K:
2万能表示的范围时5000的范围0~4999
42亿/5000,范围爆炸了;
所以,反过来,把42亿划分成5000个范围,如果能表示下,则范围是5000,照上例即可。如果还是装不下,二级分化,再划分每个范围再划分更小的5000个子范围。
如果只有有限个字符:
比如2个字符:
0~42亿上二分,然后一个变量记录它的二分的划分值是什么,另一个变量记录0~当前划分值的区间内有多少个数,最多32次,就可以求出来。
阅读全文
0 0
- 40亿个整数,求上中位数
- 求海量个无序整数的中位数
- 海量整数,求中位数
- 100亿个整数,找出中位数
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?
- 乱序不重复整数数组求中位数
- 10G个整数找中位数
- 1亿个整数求top 10000
- 求中位数
- 求中位数。
- 求中位数
- 从10G个整数中找出中位数
- 10G个整数的文件中寻找中位数
- 10G个整数,乱序排列,要求找出中位数
- MVC发送邮件
- Krpano学习:Type of panorama image? Spherical/Cylindrical
- Android应用流量测试
- (转载)基于Mysql的Sequence实现
- JSONP跨域请求数据报错 “Unexpected token :”的解决办法
- 40亿个整数,求上中位数
- 插入排序
- 聚能聊 | 人工智能技术百问——机器真的能取代人类吗
- 复制构造函数在什么情况下被调用
- 算法基础:排序(一)——选择排序、插入排序、Shell排序——Python实现
- PHP错误处理:die()Vs trigger_error()Vs throw异常
- Zxing 生成二维码嵌套logo,并输出到浏览器
- sql 获取24小时列表
- 电商订单技术方案梳理-续