试想一个场景,如果一份很大很大的数据需要排序,如果你没有足够的内存放入数据,这样子针对内存的内部排序是无法完成的,所以我们必须依靠磁盘去解决这个问题。
第一 将数据分成若干份(我们这里以10份为例子),每份都接近内存的最大数据量,这样子,将文件上的数据读入内存中,将它排序,结束后我们就可以得到10份有序的文件数据了。
const char* MergeFile(const char* file)
{
FILE* fout = fopen(file, "r");//传出文件名,打开此文件
if (fout == NULL)
{
printf("打开文件失败");
exit(-1);
}
int n = 10;
int a[10];
int i = 0;
int num = 0;
char subfile[100];
int filei = 1;
memset(a, 0, sizeof(int) * n);
//分割文件,成一个个小文件,然后排序
while (fscanf(fout, "%d\n", &num) != EOF)
{
if (i < n - 1)//使用n会导致在最后一