置換—選擇排序


置換——選擇排序

土辦法構造初始歸並段

同時最多放兩個到輸入緩沖區,只能讀入兩塊的內容,然后把這些記錄在內存排序之后,在輸出寫回外存,這樣就得到了一個初始歸並段。

由於內部排序的內存工作區只能容納6個記錄(例子)。

可以用一片更大的內存區域來進行內部排序(如:可容納18個記錄)

用於內部排序的內存工作區WA可容納l個記錄,這就意味着構造的初始歸並段也只能包含l個記錄,若文件共有n個記錄的話,則初始歸並段數量r=n/l

置換—選擇排序

注:假設用於內部排序的內存工作區只能容納3個記錄

剛開始會在待排序的文件當中讀入3個記錄

我們要構造遞增的歸並段

檢查內存工作區中的記錄,把關鍵字最小的記錄”置換“出去,並且用一個變量MINIMAX把剛才輸出的關鍵字的值給記下來

現在內存工作區中有一個空位,會在FI讀入下一個記錄

再把最小的置換出去,並且用MINIMAX記錄。

讀着讀着,

此時,內存工作區當中最小的一個記錄是10,但是通過MINIMAX這個變量我們知道,之前輸出到歸並段1的記錄到13了,所以10這個記錄我們不能放到歸並段1的末尾。

除了10 就是到14比13大,所以我們可以把14放到歸並段1的末尾

緊接着讀入下一個。。

讀到2的時候最小的比MINIMAX小,所以不能放到歸並段1的末尾

所以把30放出到歸並段1的末尾。

在一直放。。

如果在某一個時刻WA內的關鍵字都比MINIMAX更小,則該歸並段在此截至。

接下來構造歸並段2

。。。

接下來構造歸並段3

。。。

這些初始歸並段的長度可以超越內存工作區的大小的限制

讀寫磁盤是以磁盤塊為單位的。

知識回顧


免責聲明!

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



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