C++磁盘文件排序源码

下边资料是关于C++磁盘文件排序的代码,希望能对小伙伴有所用处。

#include #include #include <assert.h> #include <time.h>

using namespace std;

const int max_each_scan=5000000;

int main() { clock_t begin=clock(); bitset<max_each_scan> bit_map; bit_map.reset();

assert(fp_unsort_file);

int num;
while(fscanf(fp_unsort_file,"%d ",&num) != EOF)
{
       if(num < max_each_scan)
   {
      bit_map.set(num,1);
   }
}

assert(fp_sort_file);

for(int i=0; i<max_each_scan;i++)
{
	if(bit_map[i] ==1)
	{
		fprintf(fp_sort_file,"%d  ",i);
	}
}

int result=fseek(fp_unsort_file,0,SEEK_SET);
if (result)
{
	cout<<"fseek faild"<<endl;
}
else
{
	bit_map.reset();
	while (fscanf(fp_unsort_file,"%d",&num) != EOF)
	{
		if ( num >= max_each_scan && num < 1000000)
		{
			num -= max_each_scan;
			bit_map.set(num,1);
		}
	}

}
for (int i=0;i<max_each_scan;i++)
{
	if (bit_map[i] == 1)
	{
		fprintf(fp_sort_file,"%d",i+max_each_scan);
	}
}

clock_t end=clock();

cout<<"bitmap time:"<<endl;
cout<<(end - begin)/CLK_TCK <<"s"<<endl;

fclose(fp_sort_file);
fclose(fp_unsort_file);

return 0;
复制代码

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值