外部排序演算法

2021-10-03 21:35:31 字數 930 閱讀 1298

外部排序指的是大檔案的排序,即待排序的記錄儲存在外儲存器上,在排序過程中需進行多次的內、外存之間的交換

一般情況下:

其中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 是指能...