下边资料是关于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;
复制代码
}