外部排序算法是用於處理大數據檔案的排序問題,當數據量過大而無法一次性裝入記憶體時,需要在記憶體和外部存儲器之間進行多次數據交換以達到排序整個檔案的目的。外部排序最常用的算法是多路歸併排序,其工作原理如下:
將原檔案分解成多個能夠一次性裝入記憶體的部分,分別對每一部分調入記憶體完成排序。
對已經排序的子檔案進行多路歸併排序,增大歸併的路數可以減少外存信息的讀寫時間,但會增加選出每個記錄需要的比較次數。
為了降低選出每個記錄需要的比較次數,引入了敗者樹等最佳化技術,敗者樹是一種樹形選擇排序的變體,可以減少在k個歸併段中選擇最小元素所需的關鍵字比較次數。
其他外部排序算法還包括置換平衡歸併排序、置換選擇排序等。與內部排序算法不同,外部排序算法的主要影響因素在於讀寫記憶體的次數以及如何有效地處理和合併數據塊。