您的位置:首页 > 其它

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: