注:此问题来自《编程珠玑》第一章
问题描述:
最多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;
}