亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? algo11-2.c

?? 第七章到第十二章的代碼實現
?? C
字號:
 /* algo11-2.c 通過置換-選擇排序產生不等長的初始歸并段文件 */
 #include"c1.h"
 typedef int InfoType; /* 定義其它數據項的類型 */
 #include"c10-1.h" /* 定義KeyType、RedType及SqList */
 #define MAXKEY INT_MAX
 #define RUNEND_SYMBOL INT_MAX
 #define w 6 /* 內存工作區可容納的記錄個數 */
 #define M 10 /* 設輸出M個數據換行 */
 #define N 24 /* 設大文件有N個數據 */

 typedef int LoserTree[w]; /* 敗者樹是完全二叉樹且不含葉子,可采用順序存儲結構 */
 typedef struct
 {
   RedType rec; /* 記錄 */
   KeyType key; /* 從記錄中抽取的關鍵字 */
   int rnum; /* 所屬歸并段的段號 */
 }RedNode,WorkArea[w]; /* 內存工作區,容量為w */

 void Select_MiniMax(LoserTree ls,WorkArea wa,int q) /* 算法11.6 */
 { /* 從wa[q]起到敗者樹的根比較選擇MINIMAX記錄,并由q指示它所在的歸并段 */
   int p,s,t;
   for(t=(w+q)/2,p=ls[t];t>0;t=t/2,p=ls[t])
     if(wa[p].rnum<wa[q].rnum||wa[p].rnum==wa[q].rnum&&wa[p].key<wa[q].key)
     {
       s=q;
       q=ls[t]; /* q指示新的勝利者 */
       ls[t]=s;
     }
   ls[0]=q;
 }

 void Construct_Loser(LoserTree ls,WorkArea wa,FILE *fi)
 { /* 輸入w個記錄到內存工作區wa,建得敗者樹ls,選出關鍵字最小的記錄并由s指示 */
   /* 其在wa中的位置。算法11.7 */
   int i;
   for(i=0;i<w;++i)
     wa[i].rnum=wa[i].key=ls[i]=0; /* 工作區初始化 */
   for(i=w-1;i>=0;--i)
   {
     fread(&wa[i].rec,sizeof(RedType),1,fi); /* 輸入一個記錄 */
     wa[i].key=wa[i].rec.key; /* 提取關鍵字 */
     wa[i].rnum=1; /* 其段號為"1" */
     Select_MiniMax(ls,wa,i); /* 調整敗者 */
   }
 }

 void get_run(LoserTree ls,WorkArea wa,int rc,int *rmax,FILE *fi,FILE *fo)
 { /* 求得一個初始歸并段,fi為輸入文件指針,fo為輸出文件指針。算法11.5 */
   int q;
   KeyType minimax;
   while(wa[ls[0]].rnum==rc) /* 選得的MINIMAX記錄屬當前段時 */
   {
     q=ls[0]; /* q指示MINIMAX記錄在wa中的位置 */
     minimax=wa[q].key;
     fwrite(&wa[q].rec,sizeof(RedType),1,fo); /* 將剛選得的MINIMAX記錄寫入輸出文件 */
     fread(&wa[q].rec,sizeof(RedType),1,fi); /* 從輸入文件讀入下一記錄(改) */
     if(feof(fi))
     { /* 輸入文件結束,虛設記錄(屬"rmax+1"段) */
       wa[q].rnum=*rmax+1;
       wa[q].key=MAXKEY;
     }
     else
     { /* 輸入文件非空時 */
       wa[q].key=wa[q].rec.key; /* 提取關鍵字 */
       if(wa[q].key<minimax)
       { /* 新讀入的記錄屬下一段 */
         *rmax=rc+1;
	 wa[q].rnum=*rmax;
       }
       else /* 新讀入的記錄屬當前段 */
	 wa[q].rnum=rc;
     }
     Select_MiniMax(ls,wa,q); /* 選擇新的MINIMAX記錄 */
   }
 }

 void Replace_Selection(LoserTree ls,WorkArea wa,FILE *fi,FILE *fo)
 { /* 在敗者樹ls和內存工作區wa上用置換-選擇排序求初始歸并段,fi為輸入文件 */
   /* (只讀文件)指針,fo為輸出文件(只寫文件)指針,兩個文件均已打開。算法11.4 */
   int rc,rmax;
   RedType j;
   j.key=RUNEND_SYMBOL;
   Construct_Loser(ls,wa,fi); /* 初建敗者樹 */
   rc=rmax=1; /* rc指示當前生成的初始歸并段的段號,rmax指示wa中關鍵字所屬初始歸并段的最大段號 */
   while(rc<=rmax) /* "rc=rmax+1"標志輸入文件的置換-選擇排序已完成 */
   {
     get_run(ls,wa,rc,&rmax,fi,fo); /* 求得一個初始歸并段 */
     j.otherinfo=rc;
     fwrite(&j,sizeof(RedType),1,fo); /* 將段結束標志寫入輸出文件 */
     rc=wa[ls[0]].rnum; /* 設置下一段的段號 */
   }
 }

 void print(RedType t)
 {
   printf("(%d,%d)",t.key,t.otherinfo);
 }

 void main()
 {
   RedType b,a[N]={{51,1},{49,2},{39,3},{46,4},{38,5},{29,6},{14,7},{61,8},{15,9},{30,10},{1,11},{48,12},{52,13},{3,14},{63,15},{27,16},{4,17},{13,18},{89,19},{24,20},{46,21},{58,22},{33,23},{76,24}};
   FILE *fi,*fo;
   LoserTree ls;
   WorkArea wa;
   int i,k,j=RUNEND_SYMBOL;
   char s[3],fname[4];
   fo=fopen("ori","wb"); /* 以寫的方式打開大文件ori */
   fwrite(a,sizeof(RedType),N,fo); /* 將數組a寫入大文件ori */
   fclose(fo);
   fi=fopen("ori","rb"); /* 以讀的方式重新打開大文件ori */
   printf("大文件的記錄為:\n");
   for(i=1;i<=N;i++)
   {
     fread(&b,sizeof(RedType),1,fi); /* 依次將大文件ori的數據讀入b */
     print(b); /* 輸出b的內容 */
     if(i%M==0)
       printf("\n");
   }
   printf("\n");
   rewind(fi); /* 使fi的指針重新返回大文件ori的起始位置,以便重新讀入內存,產生有序的子文件 */
   fo=fopen("out","wb"); /* 以寫的方式打開初始歸并段文件out */
   Replace_Selection(ls,wa,fi,fo); /* 用置換-選擇排序求初始歸并段 */
   fclose(fo);
   fclose(fi);
   fi=fopen("out","rb"); /* 以讀的方式重新打開初始歸并段文件out */
   printf("初始歸并段文件的記錄為:\n");
   i=1;
   do
   {
     k=fread(&b,sizeof(RedType),1,fi); /* 依次將大文件out的數據讀入b */
     if(k==1)
     {
       print(b); /* 輸出b的內容 */
       if(i++%M==0)
         printf("\n");
     }
   }while(k==1);
   printf("\n");
   rewind(fi); /* 使fi的指針重新返回大文件ori的起始位置,以便重新讀入內存,產生有序的子文件 */
   k=0;
   while(!feof(fi)) /* 按段輸出初始歸并段文件out */
   {
     itoa(k,s,10); /* 依次生成文件名f0,f1,… */
     strcpy(fname,"f");
     strcat(fname,s);
     fo=fopen(fname,"wb"); /* 依次以寫的方式打開文件f0,f1,… */
     do
     {
       i=fread(&b,sizeof(RedType),1,fi);
       if(i==1) /* fread()調用成功 */
       {
	 fwrite(&b,sizeof(RedType),1,fo); /* 將b寫入文件f0,f1,… */
         if(b.key==j) /* 1個歸并段結束 */
         {
           k++;
           fclose(fo);
           break;
         }
       }
     }while(i==1);
   };
   fclose(fi);
   printf("共產生%d個初始歸并段文件\n",k);
 }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
337p日本欧洲亚洲大胆精品| 日本道色综合久久| 午夜久久久久久电影| 亚洲免费av高清| 亚洲欧美在线观看| 亚洲欧美日韩国产中文在线| 中文字幕在线观看一区| 最新久久zyz资源站| 亚洲女与黑人做爰| 亚洲福利一区二区三区| 亚洲视频每日更新| 亚洲图片有声小说| 麻豆一区二区三| 国产九色sp调教91| 97成人超碰视| 在线播放中文字幕一区| 欧美成人三级电影在线| 欧美国产在线观看| 亚洲一区二区三区四区的| 日日夜夜免费精品| 国产成人无遮挡在线视频| 色综合咪咪久久| 欧美一区二区三区喷汁尤物| 久久综合九色综合欧美98| 国产精品国产精品国产专区不片 | 久久久国产一区二区三区四区小说| 国产夜色精品一区二区av| 亚洲视频1区2区| 日本sm残虐另类| 波多野结衣91| 日本高清成人免费播放| 亚洲精品一区二区三区香蕉| 精品国产三级电影在线观看| 久久精品人人做人人爽97| 国产精品成人免费在线| 天天综合网天天综合色 | 日韩视频一区二区三区在线播放| 久久亚洲一区二区三区明星换脸| 欧美激情一区二区三区在线| 午夜精品123| 懂色中文一区二区在线播放| 91精品国产品国语在线不卡| 亚洲欧洲美洲综合色网| 美女看a上一区| 91亚洲永久精品| 久久色.com| 男人的j进女人的j一区| 亚洲国产成人av好男人在线观看| 成人黄色小视频在线观看| 在线视频中文字幕一区二区| 精品电影一区二区| 亚洲成av人片观看| 99久久99久久久精品齐齐 | 蜜桃在线一区二区三区| 色婷婷综合视频在线观看| 国产亚洲一区字幕| 老司机午夜精品| 欧美精品一二三区| 亚洲一级不卡视频| 一本色道久久综合精品竹菊| 国产精品无圣光一区二区| 另类专区欧美蜜桃臀第一页| 欧美美女激情18p| 亚洲综合成人在线视频| 91一区在线观看| 国产精品久久久久影院| 成人午夜免费av| 久久久久久久综合色一本| 久久精品72免费观看| 日韩欧美在线观看一区二区三区| 国产蜜臀97一区二区三区 | 免费高清成人在线| 欧美日韩黄视频| 亚洲午夜久久久久久久久久久| 高清视频一区二区| 国产精品久久三区| 色婷婷综合久久久| 亚洲一区二区三区四区在线免费观看| 91麻豆国产香蕉久久精品| 亚洲色大成网站www久久九九| av男人天堂一区| 亚洲人成影院在线观看| 91国产视频在线观看| 五月婷婷激情综合网| 日韩精品一区在线| 国产成人亚洲精品狼色在线| 中文字幕一区在线观看| 欧美影院午夜播放| 久久精品久久综合| 国产精品国产三级国产有无不卡 | 亚洲一区二区在线免费看| 色天天综合久久久久综合片| 亚洲亚洲精品在线观看| 欧美一卡二卡在线| 国产一区二区三区蝌蚪| 成人精品高清在线| 91麻豆高清视频| 亚洲视频一二三| 欧美日韩在线免费视频| 久久se这里有精品| 国产欧美在线观看一区| 色综合久久久久久久| 日韩精品乱码免费| 久久免费精品国产久精品久久久久| 成人毛片在线观看| 三级久久三级久久| 欧美极品aⅴ影院| 欧美猛男gaygay网站| 国产剧情在线观看一区二区| 一区二区三区**美女毛片| 欧美一区二区久久久| 成人短视频下载| 久久精品国产一区二区三 | 99国产精品视频免费观看| 亚洲va欧美va人人爽| 国产呦萝稀缺另类资源| 综合激情成人伊人| 91精品国产色综合久久不卡电影 | 91在线观看视频| 亚洲bt欧美bt精品| 国产精品国产a级| 日韩精品一区二区三区中文不卡| 91视频你懂的| 国产福利一区在线| 美女网站在线免费欧美精品| 亚洲图片你懂的| 国产午夜精品理论片a级大结局| 欧美三级电影在线看| 91玉足脚交白嫩脚丫在线播放| 精品一区二区三区视频在线观看| 亚洲在线成人精品| 最新国产精品久久精品| 久久精品免视看| www国产成人免费观看视频 深夜成人网| 欧美午夜一区二区三区| 高清不卡一区二区| 精品中文字幕一区二区小辣椒| 亚洲午夜国产一区99re久久| 亚洲精选在线视频| 成人免费在线播放视频| 中文字幕国产一区| 国产日韩精品一区二区三区| 精品日韩一区二区三区免费视频| 欧美另类高清zo欧美| 日本电影欧美片| 91国在线观看| 欧美伊人久久大香线蕉综合69 | 亚洲小少妇裸体bbw| 亚洲欧美视频在线观看视频| 中文字幕综合网| 亚洲精品成人悠悠色影视| 亚洲天堂2014| 亚洲精品欧美二区三区中文字幕| 国产精品夫妻自拍| 中文字幕一区二区不卡| 国产精品伦一区二区三级视频| 中文字幕在线观看一区| 亚洲人123区| 亚洲一区二区av电影| 亚洲一区二区在线免费观看视频 | 国产在线精品免费| 国产成人精品免费在线| heyzo一本久久综合| 色域天天综合网| 欧美三级电影网站| 欧美xfplay| 国产精品私房写真福利视频| 日韩美女啊v在线免费观看| 亚洲国产视频网站| 日韩精品91亚洲二区在线观看 | 亚洲免费三区一区二区| 一区二区三区不卡视频| 看国产成人h片视频| 成人精品gif动图一区| 欧美日韩一级视频| 日韩欧美国产成人一区二区| 欧美激情中文不卡| 亚洲高清不卡在线观看| 国产一区二区三区日韩 | 欧美xxxxxxxxx| **欧美大码日韩| 久久精品国产亚洲5555| 成人免费视频视频| 欧美日韩情趣电影| 国产女人18毛片水真多成人如厕 | 在线观看av一区二区| 在线播放欧美女士性生活| 久久婷婷久久一区二区三区| 亚洲免费观看在线观看| 久久精品国产亚洲一区二区三区| www.欧美色图| 精品国产一区二区三区忘忧草| 亚洲欧美日韩系列| 精品综合久久久久久8888| 欧美色欧美亚洲另类二区| 精品国产一区a| 亚洲国产裸拍裸体视频在线观看乱了| 极品少妇xxxx偷拍精品少妇| 在线免费观看日本一区| 欧美经典一区二区|