7 7 4 置換選擇排序(生成初始歸併段)

2021-07-22 16:05:38 字數 566 閱讀 4835

7.7.3討論了如何使用m路歸併來減少磁碟訪問次數。從第7.7.2的討論可知,減少初始歸併段個數r也可以減少歸併趟數s。若總的記錄個數為n,每個歸併段的長度為l,則歸併段的個數m=[n/l]。如果採用前面介紹的內部排序方法,將得到長度相同的初始歸併段。因此,必須探索新的演算法倆生成初始歸併段,這就是本節介紹的置換-選擇演算法。

設初始待排檔案fi,初始歸併段檔案為fo,記憶體工作區為wa,記憶體工作區可容納w個記錄。置換-選擇演算法的步驟如下:

1)從待排檔案fi輸入w個記錄到工作區wa.

2)從記憶體工作區wa中選出其中關鍵字最小的記錄,記為minimax.(以後再選出關鍵字比它大的記錄納入本歸併段,比它小的歸入下一歸併段)

3)將minimax記錄輸出到fo中去。

4)若fi未讀完,則從fi輸入下乙個記錄到wa中。

5)從wa中所有關鍵字比minimax記錄的關鍵字大的記錄中選出最小的關鍵字記錄,作為新的minimax。

6)重複3)~5)直到在wa中選不出新的minmax記錄為止,由此得到乙個初始歸併段,輸出乙個歸併段的結束標誌到fo中去。

7)重複2)~6)直到wa為空,由此得到全部初始歸併段。

資料結構原始碼筆記(C語言) 置換 選擇演算法

實現置換 選擇演算法 include include include include define maxsize 20 typedef int infotype 定義其他資料項的型別 typedef int keytype 定義關鍵字型別為整型 struct redtype 記錄型別 define...

排序演算法之基本排序演算法 交換 選擇 插入

交換排序 交換法的程式最清晰簡單,每次用當前的元素一一的同其後的元素比較並交換。void exchangesort int pdata,int count 選擇排序 思想,這種方法類似我們人為的排序習慣 從資料中選擇最小的同第乙個值交換,在從剩下的部分中選擇最小的與第二個交換,這樣往復下去。void...

外部排序 選擇置換 敗者樹

1.問題描述 由於在現實環境中,有時候需要對乙個非常大的檔案進行排序,而計算機記憶體是有限的,當資料無法完全存入記憶體時,則無法使用正常的排序演算法一次完成排序,而必須利用磁碟空間的輔助進行外部排序,即利用有限的記憶體每次讀入部分資料排序後得到乙個順串後暫時放到磁碟,最後將多個順串進行歸併直到最終完...