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

📄 losertree.cpp

📁 使用置换选择排序和多路归并实现的外排序程序
💻 CPP
字号:
/************败方树source**********/
//利用MAX个顺串文件
//输入顺串放在1.txt到MAX.txt中,输出顺串放在0.txt中
#include"LoserTree.h"
#include<stdlib.h>
#include<cstring>

void loserTreeMultiMerge(){
	
	//变量声明
	Buffer bufferPool [MAX+1];	//开辟长度为MAX+1的缓冲池,bufferPool[0]用作输出buffer,其余的作输入buffer
	node racer[MAX+1];	//选手
	char fname [20];	//输入文件名数组
	FILE * f [MAX+1];	//输入输出文件的句柄数组. 
						//输出文件句柄存放在为f[0], 输入文件句柄存放在f[1]到f[MAX]
	LoserTree lt;	//败方树
	node read;	//读出的数据置放在里面
	
	
	//初始化输出文件
	f[0] = fopen("0.txt", "w+");

	
	//初始化输入缓冲区buffer[1..MAX]
	for(int i = 1; i <= MAX; i++){
		
		//初始化存放顺串的文件名,从1.txt到MAX.txt
		_itoa(i, fname, 10);
		strcat(fname, ".txt");
		
		//初始化文件句柄数组
		//句柄数组序号和文件名序号相对应,也和缓冲区号相对应
		f[i] = fopen(fname, "r");

		//往输入缓冲区置入数据
		for(int j = 0; j < MAX_BUFFER; j++ ){
			fscanf(f[i], "%d %s", &read.key,read.infor);
			bufferPool[i].insert(read);
		}//for

	}//for

	
	//初始化选手
	for(int k = 1; k <= MAX; k++){
		bufferPool[k].read(racer[k]);
	}
	//***调用多路归并算法,进行MAX路归并***//
	multiMerge(lt, racer, bufferPool, f);
	
	
	//关闭文件句柄
	for(int n = 0; n <= MAX; n++){
	fclose(f[n]);
	} 

}

⌨️ 快捷键说明

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