C++磁盘文件排序源码

205 阅读1分钟

下边资料是关于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;

}