91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

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

資源簡介

vc++實現使用敗者樹實現外排序 vc++實現使用敗者樹實現外排序

資源截圖

代碼片段和文件信息

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

const?int?MAXN?=?10000;?//內排序最大容量
const?int?MAXM?=?MAXN;???//最多分成MAXM個文件
const?int?MAXV?=?99999999;??//最大整數

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];??//敗者樹中間節點,存放敗者的下標
Data?d[MAXN];??//敗者樹葉節點,存放排序數據

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

//敗者樹共n個葉節點,d[x]更新了,調整敗者樹
bool?AdjustLS(int?nint?x?int?(*cmp)(intint))
{
if(x<0?||?x>=n)?return?false;
int?f;?//x的父節點在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;
}

//從文件讀數據到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);
}

//初始化敗者樹葉節點個數為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]返回文件數
int?divide(FILE?*fp?FILE?**fT)
{
int?n?=?intiLS(MAXN);??//敗者樹的葉子數
int?run?=?-1;
bool?ef?=?false;

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

評論

共有 條評論

相關資源