从10G个数中找到中数
来源:互联网 发布:淘宝金牌卖家显示出来 编辑:程序博客网 时间:2024/06/05 14:13
在一个文件中有 10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。
不妨假设10G个整数是64bit的。
2G内存可以存放256M个64bit整数。
不妨假设10G个整数是64bit的。
2G内存可以存放256M个64bit整数。
我们可以将64bit的整数空间平均分成256M个取值范围,用2G的内存对每个取值范围内出现整数个数进行统计。这样遍历一边10G整数后,我们便知道中数在那个范围内出现,以及这个范围内总共出现了多少个整数。
如果中数所在范围出现的整数比较少,我们就可以对这个范围内的整数进行排序,找到中数。如果这个范围内出现的整数比较多,我们还可以采用同样的方法将此范围再次分成多个更小的范围(256M=2^28,所以最多需要3次就可以将此范围缩小到1,也就找到了中数)。
0 0
- 从10G个数中找到中数
- 从一组数中找到第二大的数/从一组数中找到不小于第二大数的数字的个数
- 从n个数中找出每个数的重复数
- 无序数组中找到第K小的数(或者找到最小的K个数)
- 算法实现:如何从100亿个数中找到最大的10000个数
- 通过堆排序从1亿个数中找到最小的100个数
- 从10万条(int)数组中找到重复的数
- d025: 从 n 个数中挑选出最大的数
- 从5个数中选择三个数的回溯算法
- 从M个数中选择前N大的数
- 从 n 个数中挑选出最大的数
- 从数组中计算出每个数的个数
- 从一百个数中找不存在的数
- 从10万个数中找10个最大的数
- 从1到10的数中取出3个数的所有组合情况
- 在100000001 个数中只有两个相同, 找到这个数【经典算法】
- 找到数组中最小的K个数
- [算法] 求排列组合: 从n个数中任选m个数组成一个新数
- launchAnyWhere: Activity组件权限绕过漏洞解析(Google Bug 7699048 )
- MFC托盘图标双击后界面不在最前面的解决办法
- 通过拍照或选择本地图片并剪裁图片设置成头像
- NSIS详解
- yaffs2补丁与patch-ker.sh
- 从10G个数中找到中数
- WIN7的IE11中安装activex控件
- 用Django实现动态URL
- Object-c基础编程学习笔记-键值编码
- 用手触碰电脑即可破解密码
- 关于 多进程epoll 与 “惊群”问题
- 直接拿来用!超实用的Java数组技巧攻略
- Java菜鸟征途--笔记
- android开发:获取Root权限