xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 4KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-05-26
  • 語言: C/C++
  • 標簽:

資源簡介

vc++實現(xiàn)使用敗者樹實現(xiàn)外排序 vc++實現(xiàn)使用敗者樹實現(xiàn)外排序

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?

const?int?MAXN?=?10000;?//內(nèi)排序最大容量
const?int?MAXM?=?MAXN;???//最多分成MAXM個文件
const?int?MAXV?=?99999999;??//最大整數(shù)

FILE?*fIn;
FILE?*fOut;
FILE*?fTemp[MAXM];
char?filename[MAXM][20];
int?fCount[MAXM];
int?run;

typedef?struct?tagData
{
int?key;
char?s[10];
int?run;
}Data;

int?ls[MAXN];??//敗者樹中間節(jié)點,存放敗者的下標
Data?d[MAXN];??//敗者樹葉節(jié)點,存放排序數(shù)據(jù)

int?cmp1(int?a?int?b)
{
if(d[a].run?==?d[b].run)?return?d[a].key else?return?d[a].run}?

//敗者樹共n個葉節(jié)點,d[x]更新了,調(diào)整敗者樹
bool?AdjustLS(int?nint?x?int?(*cmp)(intint))
{
if(x<0?||?x>=n)?return?false;
int?f;?//x的父節(jié)點在ls中的下標
int?winter?=?x;
int?temp;
for(f=(n+x)/2;?f>0;?f/=2)
{
if(cmp(ls[f]?winter)?>?0)
{
temp?=?winter;
winter?=?ls[f];
ls[f]?=?temp;
}
}
ls[0]?=?winter;
return?true;
}

//從文件讀數(shù)據(jù)到d[x]
int?ReadData(FILE?*fp?int?x)
{
return?fscanf(fp“%d?%s“?&d[x].key?&d[x].s);
}

//寫d[x]到文件
int?WriteData(FILE?*fp?int?x)
{
return?fprintf(fp?“%d?%s\n“?d[x].key?d[x].s);
}

//初始化敗者樹葉節(jié)點個數(shù)為n
int?intiLS(int?n)
{
memset(d0sizeof(d));
memset(ls0sizeof(ls));
int?i;
bool?ef?=?false;
d[0].key?=?-MAXV;????//人為制造d[0]為勝者便于初始化LS
for(i=1;?i {
if(ef?||?ReadData(fIni)==EOF)
{
ef?=true;
d[i].run?=?MAXV;
}
AdjustLS(nicmp1);
}
return?n;
}

int?initLS2(FILE?**fT?int?k)
{
memset(d0sizeof(d));
memset(ls0sizeof(ls));
int?i;
d[0].key?=?-MAXV;????//人為制造d[0]為勝者便于初始化LS
for(i=1;?i {
if(ReadData(fT[i]i)==EOF)
{
d[i].run?=?MAXV;
}
AdjustLS(kicmp1);
}

if(ReadData(fT[0]0)==EOF)
{?
d[0].run?=?MAXV;
}
AdjustLS(k0cmp1);
return?k;
}

//把fp分解成若干個有序的文件fT[i]返回文件數(shù)
int?divide(FILE?*fp?FILE?**fT)
{
int?n?=?intiLS(MAXN);??//敗者樹的葉子數(shù)
int?run?=?-1;
bool?ef?=?false;

int?i?=?ls[0];
if(ReadData(fpi)==EOF)?????//讀出人造的第一個勝者
{
ef?=?true;
d[i]

評論

共有 條評論

相關(guān)資源