⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 algo10-2.cpp

📁 数据结构相关代码
💻 CPP
字号:
 // algo10-2.cpp 将无序的大文件f10-1.txt(记录个数=k*N)分成k个长度为N的有序小文件的程序
 #include"c1.h"
 #include"c8-2.h" // 对两个数值型关键字比较的约定
 typedef int KeyType; // 定义关键字的类型为整型
 typedef int InfoType; // 定义其他数据项的类型为整型
 #include"c9-1.h" // 记录的数据类型
 #include"c9-2.h" // 顺序表类型的存储结构
 #include"bo9-1.cpp" // 顺序表插入排序的函数
 #include"func9-1.cpp" // 配套的输入输出函数
 #define k 5 // k路归并
 #define N 3 // 设每个小文件最多有N个数据(可将整个文件一次读入内存的称为小文件)
 void main()
 {
   SqList m; // 顺序表,用于对小文件进行内部排序
   FILE *f,*g; // 文件指针
   char filename[3]; // 有序小文件名
   int i,j;
   f=fopen("f10-1.txt","r"); // 以读的方式打开含有k*N个记录的未排序大文件f10-1.txt
   for(i=0;i<k;i++) // 将大文件f10-1.txt的数据分成k组
   { for(j=1;j<=N;j++) // 每组N个数据
       InputFromFile(f,m.r[j]); // 由数据文件输入值并赋给m.r[j]
     m.length=N; // 顺序表的记录长度
     BInsertSort(m); // 对顺序表m作折半插入排序,使m.r成为有序表
     itoa(i,filename,10); // i作为临时的有序小文件的文件名
     g=fopen(filename,"w"); // 依次以写的方式打开文件0,1,…,k-1
     printf("有序子文件%s的数据为:",filename);
     Print(m); // 输出排序后的m
     for(j=1;j<=N;j++) // 依次将已排序的m.r[j]写入小文件0,1,…,k-1
       fprintf(g,"%d %d\n",m.r[j].key,m.r[j].otherinfo);
     fclose(g); // 依次关闭小文件0,1,…,k-1
   }
   fclose(f); // 关闭未排序的大文件f10-1.txt
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -