外部排序指的是大檔案的排序,即待排序的記錄儲存在外儲存器上,在排序過程中需進行多次的內、外存之間的交換。
一般情況下:
其中tio取決於所用的外存裝置,顯然tio較tmg要大得多。因此,提高外排的效率應主要著眼於減少外存資訊讀寫的次數d。
需要歸併的次數越少,讀寫的次數d越小。因此我們使用k-路平衡歸併的時候提高k。
而在一般情況下,對m個初始歸併段進行k-路平衡歸併時,歸併的趟數為s = ⌊logkm⌋
typedef
int losertree[k]
;typedef
struct
exnode,external[k+1]
//外結點,只存放待歸併記錄的關鍵字
//利用敗者樹ls將編號從0到k-1的k個輸入歸併段中的歸併到輸出歸併段
void
k_merge
(losertree& ls,external& b)
output
(ls[0]
;}//沿從葉子到根的k條路徑將ls調整成為敗者樹
void
createlosertree
(losertree& ls)
//沿從葉子結點b[s]到根結點ls[0]的路徑調整敗者樹
void
adjust
(losertree& ls,
int s)
ls[0]
= s;
}
在wa中選擇minimax記錄的過程需利用「敗者樹」實現 外部排序演算法整理
今天看了些排序相關的綜述,裡面介紹了一種外排演算法 置換選擇排序演算法,讀了之後雲裡霧裡的。於是乎谷狗了一下,學習了學習維基百科上關於外排的介紹,感覺還不錯,確實解決了心中的疑問。其中,外歸併排序和置換選擇排序都講得很清楚,還提供了一些不錯的鏈結,如jim gray的sort benchmark 故...
外部排序 簡單演算法
資料結構與演算法分析 c語言描述 第七章 外部排序簡單演算法 雖然是用了歸併,涉及到檔案,還是挺麻煩的。檔案讀取之後是不用fseek的話是不能返回的,並且檔案我是用文字儲存數字,每個數字的字元長度不一樣,不能像陣列那樣隨機讀取存放,只能乙個乙個的讀。include include include f...
外部排序演算法整理
的。於是乎谷狗了一下,學習了學習維基百科上關於外排的介紹,感覺還不錯,確實解決了心中的疑問。其中,外歸併排序和置換選擇排序都講得很清楚,還提供了一些不錯的鏈結,如jim gray的sort benchmark 故在部落格中mark一下,以表感謝!外排序外排序 external sorting 是指能...