編寫程式,模擬改者樹實現5路歸併演算法的過程。
設有5個檔案,其中的記錄的關鍵字如下:
f0: f1: f2:f3: f4:
要求將其歸併為乙個有序段並輸出。
假設這些輸入檔案資料儲存在記憶體中,輸出結果也不必輸出到檔案,而是在螢幕上輸出即可。
**:
#include #define maxsize 20 //每個檔案中最多記錄
#define k 5 //5路平衡歸併
#define maxkey 32767 //最大關鍵字值∞
#define minkey -32768 //最小關鍵字值-∞
typedef int infotype;
typedef int keytype;
typedef struct //記錄型別
rectype;
typedef struct
filetype; //檔案型別
typedef int losertree[k]; //敗者樹是完全二叉樹且不含葉子
rectype b[k]; //b中存放各段中取出的當前記錄
filetype f[k]; //存放檔案記錄的陣列
void initial()
t=t/2;
}ls[0]=s;
}void display(losertree ls) //輸出敗者樹
void k_merge(losertree ls) //利用敗者樹ls將進行k路歸併到輸出
{ int i,q;
for(i=0;i
執行結果:
第16周實踐專案 選擇排序之堆排序
問題 檔名稱 test.cpp 完成日期 2015年12月14日 版本號 v1.0 問題描述 用堆排序法對序列進行排序 輸入描述 無 程式輸出 排序後的序列 include define maxsize 20 typedef int keytype 定義關鍵字型別 typedef char info...
第16周專案1(6)堆排序
問題及 檔名稱 專案1.6.cpp 完成日期 2015.12.19 問題描述 輸入描述 無 程式輸出 測試資料 include define maxsize 20 typedef int keytype 定義關鍵字型別 typedef char infotype 10 typedef struct ...
第16周專案1 (6)基數排序
問題及 檔名稱 1.cpp 作 者 王修文 完成日期 2016年12月15日 版 本 號 v1.0 問題描述 驗證基數排序,完成測試。輸入描述 無 程式輸出 測試資料 include include include define maxe 20 線性表中最多元素個數 define maxr 10 基...