第十一章 外部排序

2021-09-06 08:50:10 字數 2068 閱讀 2742

第十一章 外部排序

第十一章外部排序

一、內容提要

1、外部排序指待排序檔案較大,記憶體一次存放不下,尚需存放在外部介質的檔案的排序。

2、為減少平衡歸併中外存讀寫次數所採取的方法:增大歸併路數和減少歸併段個數。

3、利用敗者樹增大歸併路數。

4、利用置換—選擇排序增大歸併段長度來減少歸併段個數。

5、由長度不等的歸併段,進行多路平衡歸併,需要構造最佳歸併樹。

6、磁帶的多步歸併排序。

二、學習要點

1、熟悉外部排序的兩個階段,歸併過程。

2、掌握外部排序過程中進行外存讀

/寫次數的計算方法。

3、「勝者樹」增大歸併路數不能減少外存讀寫次數,」敗者樹」可以勝任。掌握敗者樹建立及歸併演算法。

4、熟悉置換—選擇排序的過程,理解它能得到平均長度為工作區兩倍的初始歸併段的道理。

5、熟練掌握最佳歸併樹的構造方法,及該過程中對外存讀

/寫次數的計算方法。

6、了解磁帶多步歸併的特點,熟悉歸併過程及設定虛假的方法,及歸併過程所需外存讀

/寫次數的計算方法。

三、習題解析

1.「敗者樹「中「敗者「者指的是什麼

?若利用敗者樹求

k的個數中的最大者,若在比較中有

a>b

,誰是敗者。

【解答】

所謂」敗者樹」,就是在比賽(選擇)樹中,每個雙親結點存放兩個子女結點中的」敗者」,而讓「勝者」參加高一層的比賽。在根結點之上,再加乙個結點

o,表示全域性比賽獲勝者。

這裡用敗者樹求

k個數中最大者,若

a>b, a

是勝者,

b小則是敗者。

2.」敗者樹」與「堆」有何區別。

【解答】」敗者樹」是由參加比賽的

n個元素作葉子結點所形成的完全二叉樹。而」堆」則是

n個元素的序列,且具有如下性質:

ki<=k2i             

或:ki>=k2i 且

ki<=k2i+1             

且ki>=k2i+1      (0<=i<=n div 2

) 由於堆的這個性質中,下標

i與2i及

2i+1

的關係,恰與完全二叉樹第

i個結點和它的子樹結點序號關係完全一致,故堆可看成是含

n個結點的完全二叉樹。

3.設有12

個歸併段,其長度分別為30,

44,8,

6,3,

20,60,

18,9,

62,68,

85。現欲作

4路外部歸併排序,試華出表示歸併過程的最佳歸併樹,並計算

wpl。

【解答】

因(12-1

)mod (4-1)=2

,所以的第一次歸併路數為

2+1=3

路,所以最佳歸併樹如下:

____________( 413) __________ ╱

╱ ╲╲

______(64) ­­­­­­­­­_____      (68)    (85)    ______(196)_____

╱╱ ╲╲               ╱     ╱  ╲      ╲

(9 )     (17)   (18)     ( 20)          (30)   (44)    ( 60)    (62)

╱| ╲ (3)  (6)  (8)

wpl=(3+6+8)*3+(9+18+20+30+44+60+62)*2+

(68+85)*1

=51+243*2+153*1

=690

《程式設計珠璣》第十一章 排序

好久沒寫部落格了,最近挺忙的,忙的不可開交,可細想一下,又都是在瞎忙,渾渾噩噩的,不知自己到底忙什麼,又到底有什麼收穫。捫心自問,自己浪費了不少時間。不管怎樣,自己要把握好,有志者就要時時刻刻約束自己的行為,我要這樣嚴格要求自己,不管別人怎麼看待,也不管自己有多痛苦,堅持下去。當然,寫部落格也是一樣...

modern c design 第十一章

本章介紹了經常遇到的雙分派的一種泛型解決方案。c 在語法上實現了單分派,即虛函式,通過動態機制選擇相應的函式。雙分派是形如fun object1 a,object2 b 根據a和b的實際型別動態自動分派乙個處理函式。最容易想到的方案,蠻幹法 寫一大堆過載函式.不過這種方法會有很強的依賴性。也提供了一...

第十一章3

第十一章 一 滾動元件 awt中的滾動元件包括scrollbar 滾動條 和滾動面板 scrollpane 兩種。1 滾動條scrollbar 在指定的取值範圍內快速選取某一值的功能。i.構造方法 public scrollbar int orientation,int value,int visi...