1MB内存空间处理超过1000万数据的排序
2015-12-24 16:19
330 查看
注:此问题来自《编程珠玑》第一章
问题描述:
最多1000万个正整数的文件,每个数7位正整数,没有任何重复,不与其他数关联
输出:
升序排列的输出文件
约束:1MB的内存空间,最短的运行时间
1000万数据需要使用800万位(1MB)来表示,只使用一次读入读出文件。可考虑使用位图来解决。
分3步:
初始化:所有位置0;
for(i=0;i<n;i++)
bit[i]=0;
从文件读入数据,每读入一个数据,相应位置1,
while()
{
fin>>num;
bit[num=1;
}
检查每一位,该位为1,则输出对应整数。
for(i=0;i<n;i++)
{
if(bit[i])
fout>>i;
}
问题描述:
最多1000万个正整数的文件,每个数7位正整数,没有任何重复,不与其他数关联
输出:
升序排列的输出文件
约束:1MB的内存空间,最短的运行时间
1000万数据需要使用800万位(1MB)来表示,只使用一次读入读出文件。可考虑使用位图来解决。
分3步:
初始化:所有位置0;
for(i=0;i<n;i++)
bit[i]=0;
从文件读入数据,每读入一个数据,相应位置1,
while()
{
fin>>num;
bit[num=1;
}
检查每一位,该位为1,则输出对应整数。
for(i=0;i<n;i++)
{
if(bit[i])
fout>>i;
}
相关文章推荐
- python基础----map和reduce
- sublime简要笔记
- 大庆与华为企业云达成战略合作 携手推进云计算产业发展
- 信号量的使用案例
- MyEclipse 快捷键方法
- 继承
- C# ToString()用法介绍
- iOS中NSUserDefaults的使用
- Ehcache(02)——ehcache.xml简介
- 做项目过程
- mysql关键字
- 【学习方法总结】:时间积累法
- c#之链栈
- Android Volley的基本用法(一)
- 卷积神经网络初探
- Oracle - 数据库的实例、表空间、用户、表之间关系
- Java设计模式_创建型_工厂模式_商品是这样生产的
- 谷歌技术面试要点(Google面试)(14年5月20日交大专场)
- android android.mk中:= ?= +=之间的区别
- 12个漂亮的 CSS3 按钮实现方案