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

📄 losertree.cpp

📁 本程序实现了败者树等外排序方式
💻 CPP
字号:
/************败方树source**********/
//利用MAX个顺串文件
//输入顺串放在1.txt到MAX.txt中,输出顺串放在0.txt中

#include "LoserTree.h"

void main(){
	
	//变量声明
	Buffer<int> bufferPool [MAX+1];	//开辟长度为MAX+1的缓冲池,bufferPool[0]用作输出buffer,其余的作输入buffer
	int racer[MAX+1];	//选手
	char fname [20];	//输入文件名数组
	FILE * f [MAX+1];	//输入输出文件的句柄数组. 
						//输出文件句柄存放在为f[0], 输入文件句柄存放在f[1]到f[MAX]
	LoserTree<int> lt;	//败方树
	int 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");
		cout<<fname<<"  ";
		
		//初始化文件句柄数组
		//句柄数组序号和文件名序号相对应,也和缓冲区号相对应
		f[i] = fopen(fname, "r");

		//往输入缓冲区置入数据
		cout<<"The initial data in the input buffer are: ";
		for(int j = 0; j < MAX_BUFFER; j++ ){
			fscanf(f[i], "%d ", &read);
			bufferPool[i].insert(read);
			cout<<read<<"  ";
		}//for
		cout<<endl<<endl;

	}//for

	
	//初始化选手
	cout<<"the initial racers are:"<<endl;
	for(int k = 1; k <= MAX; k++){
		bufferPool[k].read(racer[k]);
		cout<<racer[k]<<"  ";
	}
	cout<<endl;

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

	//统计输出文件中的记录数
	//这个没有太大用处,起检查作用
	int a;
	int x = 0;
	FILE * ff;
	ff = fopen("0.txt", "r");
	while(!feof(ff)){
	fscanf(ff, "%d ", &a);
	x++;
	}//while
	cout<<"the all number is:";
	cout<<x<<endl;
	

	/*
	//测试用例
	LoserTree<int> lt;	//败方树
	int winner;	//最终胜者索引
	int racer[MAX+1];	//选手

	//初始化选手
	cout<<"the initial racers are:"<<endl;
	racer[1] = 33;
	racer[2] = 28;
	racer[3] = 17;
	racer[4] = 11;
	racer[5] = 30;
	//racer[6] = 11;
	//racer[7] = 161;
	//racer[8] = 63;
	//racer[9] = 28;
	//racer[10] = 2;


	//初始化败方树
	lt.Initialize(racer, MAX, Winner<int>, Loser<int>);

	//取得最终胜者索引
	winner = lt.Winner();	
	*/
}

⌨️ 快捷键说明

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