敗者樹


敗者樹

多路平衡歸並帶來的問題

外部排序時間開銷=讀寫外存的時間+內部排序所需時間+內部歸並所需 時間

\[歸並趟數S=\lceil log_kr \rceil ,歸並路數k增加,歸並趟數S減少,讀寫磁盤總次數減少 \]

使用k路平衡歸並策略,選出一個最小元素需要對比關鍵字(k-1)次, 導致內部歸並所需時間增加

8路平衡歸並,從八個歸並段中選出一個最小元素需要對比關鍵字7次

可用“敗者樹”進行優化

什么是“敗者樹”

敗者樹的構造

敗者樹——可視為一棵完全二叉樹(多了一個頭頭)。k個葉節點分別是當前參加比較的元素,非葉子結點用來記憶左右子樹中的”失敗者“,而讓優勝者往上繼續進行比較,一直到根節點。

敗者樹的使用

敗者樹在多路平衡歸並中的應用

對於k路歸並,第一次構造敗者樹需要對比關鍵字k-1次

有了敗者樹,選出最小元素,只需要對比關鍵字

\[\lceil log_2k \rceil 次 \]

敗者樹的實現思路

知識回顧


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM