磁盤和磁帶都屬于計算機的,【外排序】外排序算法(磁盤排序、磁帶排序) 外存設備結構分析 敗者樹多路歸并 最佳歸并樹白話講解

 2023-11-07 阅读 31 评论 0

摘要:外排序外排序概述外排序的基本方法是歸并排序法例子總結存儲設備(可忽略)磁帶磁帶結構磁盤硬盤結構塊硬盤上的數據定位磁盤排序磁盤排序過程1.生成初始順串方法1(常規方法):方法2:置換-選擇排序方法2.處理順串形成有序文件1.多路平

外排序

  • 外排序概述
    • 外排序的基本方法是歸并排序法
      • 例子
      • 總結
  • 存儲設備(可忽略)
    • 磁帶
      • 磁帶結構
    • 磁盤
      • 硬盤結構
      • 硬盤上的數據定位
  • 磁盤排序
    • 磁盤排序過程
      • 1.生成初始順串
        • 方法1(常規方法):
        • 方法2:置換-選擇排序方法
      • 2.處理順串形成有序文件
        • 1.多路平衡歸并
        • 2.利用敗者樹實現k路平衡歸并過程
          • 利用敗者樹實現k路平衡歸并的過程是:
  • 最佳歸并樹
    • 最佳歸并樹概念
    • 存在的問題當進行k路歸并時最后進行歸并的歸并段小于k個
    • 構造步驟
  • 磁帶排序
    • 磁帶多路平衡歸并排序
    • 磁帶多階段歸并排序

外排序概述

(本章設計內容后續會具體講解)

外排序是指數據存放在外存中,數據排序時涉及內、外存數據交換的排序方法。 
在這里插入圖片描述

存儲在外存上的數據以文件為基本單位,由文件系統進行讀寫操作,讀寫操作的基本單位為物理塊

外排序的基本方法是歸并排序法

磁盤和磁帶都屬于計算機的、一、生成若干初始歸并段(順串):這一過程也稱為文件預處理。一種常規的方法如下:
在這里插入圖片描述

  1. 把含有n個記錄的文件,按內存大小w分成若干長度為w的子文件(歸并段);
  2. 分別將各子文件(歸并段)調入內存,采用有效的內排序方法排序后送回外存。

    產生m=[n/w]個初始歸并段。

此時產生的若干子文件稱為順串

二、多路歸并:

(所謂多路歸并,具體使用幾路歸并是看計算機內存大小的,如計算機內存為2則只能使用2路歸并)

??對這些初始歸并段進行多遍歸并,使得有序的歸并段逐漸擴大,最后在外存上形成整個文件的單一歸并段,也就完成了這個文件的外排序。

例子

磁盤和磁帶是什么存儲器、在這里插入圖片描述

  1. 將一個大文件分成M個小文件,每個小文件是有序的
    在這里插入圖片描述
  2. 然后我們從M個子文件中各取一個數字進入內存處理(將該數字打上隊列編號標記方便后續處理)
    在這里插入圖片描述
  3. 比較中轉站中的數據,當從中轉站出來的最小數字(升序排列)就是我們最后要排序的數字之一,將其寫入到歸并結果文件
    在這里插入圖片描述

??因為該數字打上了隊列編號,所以方便我們通知對應的編號隊列繼續出數字進入中轉站隊列(保證從中轉站中取出的數據是所有文件中最小的),可以看出中轉站一直保存了M個記錄,當中轉站中的所有數字都出隊完畢,則本次歸并結束。

因為每個小文件都是有序的順串,所以當內存取出所有小文件第一個數據處理后,將從輸出的那個數據所屬小文件中再次拿出一個數據,保證了內存中的數據都是各個小文件中最小的那一個

多次使用歸并算法,直到所有小文件都被處理完(以二路歸并為例):
在這里插入圖片描述

總結

  1. u個記錄需要進行u-1次操作(對各個順串中數據進行比較)(不考慮∞ (文件中數據讀取完再取的話設為∞))

  2. k路歸并每次操作需要k-1次關鍵字比較

  3. 磁帶比磁盤更能儲存信息。總的關鍵字比較次數為:(u-1)(k-1)

  4. 影響歸并過程性能因素:

    • 記錄讀寫次數。

    • 內存中歸并時需要關鍵字比較次數。

    • 外排序方法與各種外存設備的特征有關。

      影響內排序的數據位置交換,在外排序中變成了記錄讀寫次數,所以此時影響外排序方法性能的主要原因為外存存取數據所花費的時間,即外排序方法與各種外存設備的特征有關

      磁盤調度算法有關例題。外存設備大體上可以分為兩類
      1.順序存取設備(磁帶)
      2.直接存取設備(磁盤)

存儲設備(可忽略)

文件存儲在外存上,因此外排序方法與各種外存設備的特征有關

外存設備大體上可以分為兩類

  1. 順序存取設備(磁帶)
  2. 直接存取設備(磁盤)

磁帶

磁帶是一種典型順序存取設備,通過讀寫頭讀寫數據,對于檢索和修改操作十分不便,主要用于處理很少需要修改的并且進行順序存區的信息,特別用作備份數據的設備

磁帶按用途可大致分成錄音帶、錄像帶、計算機帶和儀表磁帶四種。

磁帶結構

在這里插入圖片描述

  • 錄音磁頭實際上是個蹄形電磁鐵,兩極相距很近,中間只留個狹縫。整個磁頭封在金屬殼內。錄音磁帶的帶基上涂著一層磁粉,實際上就是許多鐵磁性小顆粒。
  • 磁帶緊貼著錄音磁頭走過,音頻電流使得錄音頭縫隙處磁場的強弱、方向不斷變化,磁帶上的磁粉也就被磁化成一個個磁極方向和磁性強弱各不相同的“小磁鐵”,聲音信號就這樣記錄在磁帶上了。
  • 放音頭的結構和錄音頭相似。當磁帶從放音頭的狹縫前走過時,磁帶上“小磁鐵”產生的磁場穿過放音頭的線圈。由于“小磁鐵”的極性和磁性強弱各不相同,它在線圈內產生的磁通量也在不斷變化,于是在線圈中產生感應電流,放大后就可以在揚聲器中發出聲音。

磁盤

快速排序用什么存儲結構,??磁盤是一種直接存取的外存設備,磁盤不僅能夠進行順序存取,而且能直接存取任何記錄,他的存取速度比磁盤快得多

??磁盤分為硬盤和軟盤兩種,硬盤的容量比軟盤大得多,而且存取速度也比軟盤快得多

硬盤結構

硬盤結構包括:盤片磁頭盤片主軸控制電機磁頭控制器數據轉換器接口緩存等幾個部份。
在這里插入圖片描述

  • 所有的盤片(一般硬盤里有多個盤片,盤片之間平行)都固定在一個主軸上。
  • 在每個盤片的存儲面上都有一個磁頭,磁頭與盤片之間的距離很小(所以劇烈震動容易損壞),磁頭連在一個磁頭控制器上,統一控制各個磁頭的運動。
  • 磁頭沿盤片的半徑方向動作,而盤片則按照指定方向高速旋轉,這樣磁頭就可以到達盤片上的任意位置了。

??整個磁盤由多個盤面組成,固定在同一軸上,沿一個固定方向高速旋轉,每個盤面包括上、下兩個盤面,每個盤面用于存儲信息,每個盤面有一個讀寫頭,所有讀寫頭都是固定在一起,同時同步移動的再一個盤面上讀寫頭的軌跡,稱為磁道,磁道就是磁面上的圓環,各個磁面上半徑相同的詞到總合成為一個柱面,每個磁道都別切分成很多扇形區域稱為扇區
在這里插入圖片描述

  • 磁盤的容量:磁頭數 × 磁道(柱面)數 × 每道扇區數 × 每扇區字節數。

  • 磁頭(head)數:每個盤片一般有上下兩面,分別對應1個磁頭,共2個磁頭

  • 早期的磁盤調度算法,磁道(track)數:磁道是從盤片外圈往內圈編號0磁道,1磁道…,靠近主軸的同心圓用于停靠磁頭,不存儲數據

  • 柱面(cylinder)數:所有盤面上同半徑的磁道數量

  • 扇區(sector)數:每個磁道都別切分成很多扇形區域,每道的扇區數量相同

  • 圓盤(platter)數:就是盤片的數量

在這里插入圖片描述
扇區(sector):
??硬件(磁盤)上的最小的操作單位,是操作系統和塊設備(硬件、磁盤)之間傳送數據的單位。

物理塊( block)
??block由一個或多個sector組成,是軟件(OS、文件系統)中最小的操作單位;
塊是上層軟件中(操作文件時)使用的最小的操作單元,就是(操作文件時)一個塊一個塊進行操作(塊的大小格式化時可以設置【如linux、fatfs等等】)

硬盤光盤磁帶的特點。OS的虛擬文件系統從硬件設備上讀取一個block,實際為從硬件設備讀取一個或多個sector。

  • 對于文件管理來說,每個文件對應的多個block可能是不連續的;
  • block最終要映射到sector上,所以block的大小一般是sector的整數倍。
  • 不同的文件系統block可使用不同的大小,操作系統會在內存中開辟內存,存放block到所謂的block buffer中。

物理塊是數據在磁盤上的存取單位,也就是每進行一次I/O操作,最小傳輸的數據大小。

  • 如果物理塊定的比較大,比如一個柱面大小,這時,即使是1個字節的文件都要占用整個一個柱面,假設Linux環境下文件的平均大小為1K,那么分配32K的柱面將浪費97%的磁盤空間,也就是說,大的存取單位將帶來嚴重的磁盤空間浪費。
  • 如果物理塊過小,則意味著對一個文件的操作將進行更多次的尋道延遲和旋轉延遲,因而讀取由小的物理塊組成的文件將非常緩慢

邏輯塊
??具體文件系統管理的是一個邏輯空間,這個邏輯空間就象一個大的數組,數組的每個元素就是文件系統操作的基本單位邏輯塊

??邏輯塊是從0開始編號的,而且,邏輯塊是連續的,與物理塊相對應

硬盤上的數據定位

??每個扇區可存儲128×2的N次方(N=0.1.2.3)字節的數據(一般為512B),扇區為數據存儲的最小單元,外圈的扇區面積比內圈大,為何存儲的數據量相同,這是因為內外圈使用的磁物質密度不同,但現在的硬盤已經采用內外圈同密度物質來存儲數據了,以減少類似“大面積小數據”的浪費情況。

CHS模式:
??有了扇區(sector),有了柱面(cylinder),有了磁頭(head),顯然可以定位數據了,這就是數據定位(尋址)方式之一,CHS(也稱3D),對早期的磁盤(上圖所示)非常有效,知道用哪個磁頭,讀取哪個柱面上的第幾扇區就OK了。

磁盤和磁帶存取方式???CHS模式支持的硬盤容量有限,用8bit來存儲磁頭地址,用10bit來存儲柱面地址,用6bit來存儲扇區地址,而一個扇區共有512Byte,這樣使用CHS尋址一塊硬盤最大容量為256 * 1024 * 63 * 512B = 8064 MB(1MB = 1048576B)(若按1MB=1000000B來算就是8.4GB)

LBA編址方式:
??但現在很多硬盤采用同密度盤片,意味著內外磁道上的扇區數量不同,扇區數量增加,容量增加,3D很難定位尋址
新的尋址模式:LBA(Logical Block Addressing)。在LBA地址中,地址不再表示實際硬盤的實際物理地址(柱面、磁頭和扇區)。

??LBA編址方式將CHS這種三維尋址方式轉變為一維的線性尋址,它把硬盤所有的物理扇區的C/H/S編號通過一定的規則轉變為一線性的編號,系統效率得到大大提高,避免了煩瑣的磁頭/柱面/扇區的尋址方式。

在訪問硬盤時,由硬盤控制器再將這種邏輯地址轉換為實際硬盤的物理地址。LBA下的編號,扇區編號是從0開始。

邏輯扇區號LBA的公式:
??LBA(邏輯扇區號)=磁頭數 × 每磁道扇區數 × 當前所在柱面號 + 每磁道扇區數 × 當前所在磁頭號 + 當前所在扇區號 – 1。

磁盤排序

??磁盤是直接存取設備,讀取一個數據塊的時間與當前讀寫頭所處位置關系不大,所以可以通過讀寫數據塊的次數來衡量存取時間

磁盤scan算法、??對存放在磁盤中的文件進行排序屬于典型的外排序,稱為磁盤排序(disk sort),其磁盤排序過程與外排序所用歸并排序過程基本相同

磁盤排序過程

在這里插入圖片描述
??磁盤中的Fin文件存儲著待排序的數據,通過計算講Fin文件中的記錄一部分一部分的調入內存處理,產生若干個文件F1…Fm,他們經過處理后都是有序的,稱為順串,然后再次將F1…Fm依次調入內存,通過相關歸并算法生成Fout文件

實際上文件系統在讀取時每次讀取一個物理塊,而一個物理塊中可能有多個記錄(數據),但為了方便起見以下每個記錄占用一個物理塊(讀寫記錄只需要進行一次讀寫操作)

1.生成初始順串

方法1(常規方法):

??按照內存大小將初始文件分為若干份( 我們假設需要排序的int數有12個,內存一次只能裝下3個int數,就把12個數據分成4份(12/3=4),然后通過內排序處理成有序子串)
在這里插入圖片描述

  • 根據給定文件記錄數n,內存空間w,有初始歸并個數m=[n/w](取上界)
  • 內存中排序的時候可以選擇快速排序或歸并排序等算法。
    在這里插入圖片描述

方法2:置換-選擇排序方法

??置換-選擇排序方法生成初始歸并段,該方法可以減少生成的初始歸并段個數(初始歸并段個數越少,則越接近最后排序結果,可以減少歸并次數)

  1. 從待排文件Fin中按內存工作區WA的容量w讀入w個記錄。設歸并段編號i=1。
  2. 從WA中選出關鍵字最小的記錄Rmin。
  3. 將Rmin記錄輸出到當前歸并段Fi。
  4. 若Fin不空,則從Fin中讀入下一個記錄x放在Rmin所在的工作區位置代替Rmin。
  5. 在工作區中所有≥Rmin的記錄中選擇出最小記錄作為新的Rmin,重復(3),直到選不出這樣的Rmin。
  6. 設i=i+1,開始一個新的歸并段。
  7. 若工作區已空,則初始歸并段已全部產生;否則執行(2)。

總結

  1. 在內部排序中、共有n個記錄,內存工作區WA的容量為w:

  2. 若在w個記錄中選取最小關鍵字的采用簡單比較方法,每次需要w-1次比較。

使用敗者樹可以提高比較效率

  1. 總的時間復雜度為O(nw)。

讀出和寫入均為n

2.處理順串形成有序文件

1.多路平衡歸并

什么是k路平衡歸并:
??根據內存大小可以劃分為不同的多路歸并方案
??2路平衡歸并:每一趟從m個歸并段得到[m/2]個歸并段。

處理時把兩個小的有序子串合并成一個大的有序子串(二路歸并)
在這里插入圖片描述
多次使用歸并算法,直到所有小文件都被處理完

排序時不穩定的有,總結:

  1. 每歸并一次,參與歸并的每個記錄都要讀一次和寫一次。

  2. 總的讀記錄數(寫記錄數與之相同):

    • (F1+F2+F3+F4的記錄數)×2=24=對起始12條記錄讀(寫)了2遍=log2m

    • 該數越大,效率越差

    • 當m不滿足2的i次方時,增加兩個長度為0的虛段
      在這里插入圖片描述

  3. 關于拓撲排序。總的讀記錄數等同于哈夫曼樹WPL(帶權路徑長度):

    • 從根結點到各個葉結點的路徑長度與相應結點權值的乘積的和
    • 顯然不同的歸并方案所需要的讀寫記錄數是不同的(使用二路歸并或歸并方案不同的二路歸并、三路歸并造成的讀寫次數也不同)
  4. 影響k路平衡歸并的因素

    • 歸并時需要讀寫磁盤的次數
      ??k路平衡歸并時讀寫磁盤次數的計算:m=8,假設每個歸并段4個記錄:k=2
      ??讀記錄次數 = WPL = 8×4×3 = 96(如果每個記錄占用一個物理塊,讀寫磁盤次數=96×2=192次)
      ??采用k路平衡歸并時,通常k越大,讀寫磁盤次數會減少。
    • 歸并時需要關鍵字比較的次數
      ??k路平衡歸并時關鍵字比較次數的計算
      在這里插入圖片描述
      ??采用k路平衡歸并時,則相應的歸并樹有[logkm]+1層,要對數據進行[logkm]趟掃描。
      ??總共需要的關鍵字比較次數為:
      在這里插入圖片描述
      增大歸并路數k,讀寫磁盤次數減少,而關鍵字比較次數會增大。若k增大到一定的程度,就會抵消掉由于減少讀寫磁盤次數而贏得的時間。
      在這里插入圖片描述

2.利用敗者樹實現k路平衡歸并過程

敗者樹
??敗者樹是一棵有k個葉子節點的完全二叉樹(可以將大根堆看成勝者樹,小根堆看成敗者樹),其中葉子節點存儲參與歸并的記錄,分支節點存放關鍵字對應的段號。

??所謂敗者是兩個記錄比較時關鍵字較大者,勝者是兩個記錄比較時關鍵字較小者

??敗者樹用于在k個記錄中選取最小關鍵字的記錄。敗者樹類似于堆排序中的小根堆。

利用敗者樹實現k路平衡歸并的過程是:

利用敗者數實現k路平衡歸并的過程,是先建立敗者樹,然后對k個輸入有序段進行k路平衡歸并

下列說法正確的是?一、先建立敗者樹

??建立敗者數是采用類似于小根堆調整的方法實現的,初始時令所有的分支結點指向一個含最小關鍵字的葉子節點,然后從葉子結點出發,調整分支節點為新的敗者(比較時關鍵字較大者)即可

  1. 計算樹中結點個數:
    ??敗者樹是一棵有k個葉子節點的完全二叉樹(結點個數最少),由二叉樹性質,n2=n0-1=k-1,n=n0+n1+n2=2k-1+n1,為了讓其結點最少,則讓n1=0,n=2k-1(其中n為敗者樹中結點,下標為該結點的度數),另外添加一個冠軍結點(存放數中最小者)。

例子,k=5:

首先構造非葉子節點n2=n0-1=k-1=4
在這里插入圖片描述
每個葉子結點對應一個歸并段,段號為0~4。
在這里插入圖片描述
初始時每個分支結點取值“5(-∞)”,5表示段號(此時為虛擬段號,實際段號為0~4),- ∞表示最小關鍵字。
在這里插入圖片描述

例如,某結點取值為“4(15)”,表示結點值來自4號段的關鍵字15對應的記錄。

調整產生冠軍(最小者)的過程

堆排序快速排序歸并排序的關系???從F4=>F0重復操作:將當前結點的關鍵字與父結點比較,將大的(敗者)放在父結點中,小者(勝者)繼續進行,直到根結點。最后將勝者放在冠軍結點中。
在這里插入圖片描述
二、用敗者樹進行歸并

  1. 取每個輸入有序段的第一個記錄,作為敗者樹的葉子節點,建立初始敗者數

    兩兩葉子節點進行比較,在雙親節點中存放比較的敗者(關鍵字較大者),而讓勝者去參加更高一層的比賽,如此在根節點之上勝出的冠軍是所有關鍵字最小者

  2. 將勝出的記錄(冠軍)寫至輸出歸并段,在對應的葉子節點處補充其輸入有序段的下一個記錄,若該有序段變空,則補充一個大關鍵字(比所有關鍵字都大,設為∞)的虛記錄 ∞

  3. 調整敗者樹,選擇新的冠軍(最小的記錄)

    從補充記錄的葉子節點向上和雙親結點的關鍵字比較敗者留在該雙親節點,勝者繼續向上,直到樹的根結點,最后將勝者放在根節點的雙親節點中 作為冠軍

  4. 路徑排序算法,若勝出的記錄關鍵字等于∞則歸并結束,否則重復(2)

例子,歸并過程:
??取出的冠軍為1(5),從1號段中取下一個記錄,沿著個分支向上操作,產生次小的記錄。重復操作直到冠軍為∞
在這里插入圖片描述
總結

  1. 利用敗者樹實現k路平衡歸并時,總共需要的關鍵字比較次數為:
    在這里插入圖片描述

  2. 關鍵字比較次數與k無關 , 總的內部歸并時間不會隨k的增大而增大。

    只要內存空間允許,盡可能增大歸并路數k。

  3. 采用敗者樹,置換-選擇排序中關鍵字比較次數分析

共有n個記錄,內存工作區WA的容量為w:若在w個記錄中選取最小關鍵字的采用敗者樹方法,每次需要log2w次比較。總的時間復雜度為O(nlog2w)。

最佳歸并樹

??使用常規方法生成的初始歸并段記錄數是相同的,使用置換-選擇排序方法生成的順串可能會導致順串與順串中記錄個數不同

??k路平衡歸并適合初始歸并段中的記錄個數相同的情況,當初始歸并段中的記錄個數不同時哪些初始歸并段先歸并,哪些后歸并都會影響算法的性能
在這里插入圖片描述

若記錄數多的先歸并記錄數少的歸并段后歸并,會導致該歸并段參與的歸并次數比記錄少的歸并段歸并次數多,而讀寫次數計算和哈夫曼樹WPL相同,從根結點到各個葉結點的路徑長度與相應結點權值的乘積的和,可知算法效率顯然不高

最佳歸并樹概念

  • 采用k叉哈夫曼樹的構建順序作為歸并方案的歸并樹稱為最佳歸并樹。
  • 因為使用哈夫曼樹的構建順序所以WPL最小
  • 并且在內存中歸并時,利用敗者樹減少關鍵字比較次數可以使得性能更佳

存在的問題當進行k路歸并時最后進行歸并的歸并段小于k個

(假設k=3)
在這里插入圖片描述
解決的方法是加虛段(長度為0的段),每次恰好k個段進行歸并
應加(k-1)-(m-1) Mod(%) (k-1)個虛段
在這里插入圖片描述

構造步驟

??構建最佳歸并樹(m個初始歸并段)就是構建帶權路徑長度最短的k叉(階)哈夫曼樹

一、計算是否需要增加虛短
??若x=(m-1) Mod (k-1)≠0,則需附加(k-1)-x個虛段,以使每次歸并都可以對應k個段。

例子
在這里插入圖片描述

  1. 初始歸并段個數m=11,k=4。x=(m-1) Mod (k-1)=1≠0,因此需附加:
  2. (k-1)-x=2
  3. 個長度為0的虛段。

二、按照哈夫曼樹的構造原則(權值越小的結點離根結點越遠)構造最佳歸并樹。

(1)給定的n個權值[例:W1.W2.。。](這里的權值是歸并段中的記錄個數)構造n棵只有一個葉結點的叉樹,從而得到一個二叉樹的集合F-{T1… Ti.cum.}

(2)將二叉樹集合F排序

(3)在F中選取四個長度最小的歸并段,將作為葉子節點,其值累加和為其父節點值

(4)在森林F中再次選取3個歸并段與葉子節點的父節點累加構造出一個父節點

(5)重復4直到只剩下F一棵樹為止,這棵樹就是最佳歸并樹

總結

  • 在滿足k路平衡歸并的前提,平衡歸并樹 ≡ 最佳歸并樹
    在這里插入圖片描述

    兩者之間的區別不過是歸并方案不同

  • 由此選擇歸并方法時

    1. 滿足k路平衡歸并的前提(歸并段中記錄個數相同) => 采用平衡歸并樹;
    2. 否則 => 采用最佳歸并樹

磁帶排序

磁帶:屬順序存取設備。

磁帶排序主要解決多個磁帶交替使用的問題。

磁帶排序也是外排序的一種,也使用多路歸并排序

磁帶多路平衡歸并排序

??磁帶多路平衡歸并排序過程與磁盤的多路平衡歸并排序過程基本上相同。

磁帶排序和磁盤排序的主要不同之處在于磁帶排序需要充分考慮歸并段的分布狀況。

磁帶是順序存取的,所以各歸并段分布在不同磁帶和同一磁帶的不同位置對排序效率影響極大。

  1. 對輸入文件的各段進行內排序,生成初始歸并段。
  2. 把它們寫到磁帶上,然后再把這些歸并段進行反復的歸并,直到只剩下一個歸并段(即為排好序的文件)為止。

磁帶多階段歸并排序

??多階段歸并排序 屬于多路非平衡歸并排序,即各條帶上的歸并段不再保持平衡分布。

??使用磁帶多階段歸并排序 是因為在進行磁帶多路平衡歸并排序時,重新分布有序段的問題需要使用的磁帶數量是比較多的(k路歸并時,需要使用2k個磁帶,k個磁帶做輸入帶,k個磁帶做輸出帶)

??在k路多階段歸并中僅使用k+1條磁帶,就可避免在多路平衡歸并排序法中遇到的重新分布有序段的問題。

多階段歸并排序過程:

  1. 開始時,初始歸并段不平衡地分配在前k條磁帶上(輸入帶),第k+1條磁帶作為輸出帶,開始為空。

    假設有17個初始歸并段為(S1,S2,…,S17),用4臺磁帶機Tl、T2、T3和T4做三路的多階段歸并排序,其初始歸并段的分布情況及排序過程中各磁帶數據的變化情況。
    在這里插入圖片描述

  2. 每一步歸并只是部分記錄參加,歸并段最少的帶在本步歸并完成后便成為空帶,作為下一步歸并的輸出帶。
    在這里插入圖片描述
    在這里插入圖片描述

  3. 這樣,k+1條磁帶將輪流成為輸出帶,直到整個文件為一個排序文件為止。
    在這里插入圖片描述
    總結

為了使歸并的趟數達到最少,必須合理地分配各磁帶上初始歸并段的段數,歸并段的總數以及在各帶上的分布情況與k階廣義Fibonacci(斐波那契)序列有對應關系
在這里插入圖片描述
初始歸并段在各帶上分布的段數應為:
在這里插入圖片描述
k階Fibonacci數列可用下面的遞推公式導出:
在這里插入圖片描述

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/169074.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息