版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第十一章.外部排序(Chapter11.ExternalSorting)待排序列記錄數(shù)量太大,不能全部存放在計(jì)算機(jī)隨機(jī)存儲器中,排序過程中需對計(jì)算機(jī)外存進(jìn)行訪問,這種排序過程稱為外部排序?!?1.1外存信息的存取一、磁帶信息的存?。?/p>
磁帶是在一條塑料薄膜上涂有磁性材料用以記錄數(shù)據(jù)的存儲介質(zhì)。其記錄組之間有一定的空隙IRG(InterRecordGap),它不是連續(xù)運(yùn)轉(zhuǎn)的設(shè)備,讀寫二、磁盤信息的存?。?/p>
磁盤是在一片塑料薄膜上涂有磁性材料用以記錄數(shù)據(jù)的存儲介質(zhì)。它分成多個(gè)磁道(柱面),每個(gè)磁道又分為多個(gè)扇區(qū),多個(gè)磁盤組成的磁盤組還涉及到盤片號(磁頭號),磁盤繞軸高速旋轉(zhuǎn),讀寫頭則沿其一條半徑作直線運(yùn)動以尋道。它也不是信息只能在運(yùn)行穩(wěn)定時(shí)進(jìn)行,且找到要讀寫的記錄也需要一定的繞帶時(shí)間,因此,在磁帶上讀寫信息所需的時(shí)間由兩部分組成:TI/O=td+ntw,其中td
為延遲時(shí)間,即讀寫磁頭到達(dá)信息所在物理塊起始位置所需時(shí)間,tw
為傳輸一個(gè)記錄的時(shí)間。磁帶是一種順序存儲設(shè)備?!?1.2外部排序的方法
總體要用歸并排序,亦即將待排序列分成若干子序列分別進(jìn)入內(nèi)存排成有序序列(初始?xì)w并段),再用歸并排序?qū)⑺袣w并段排序成一個(gè)有序序列。連續(xù)運(yùn)轉(zhuǎn)的設(shè)備,讀寫信息只能在旋轉(zhuǎn)穩(wěn)定時(shí)進(jìn)行,且找到要讀寫的記錄也需要一定的尋道、尋扇區(qū)時(shí)間,因此,在磁盤上讀寫信息所需的時(shí)間由三部分組成:TI/O=tseek+tla+ntw,其中tseek
為尋道時(shí)間(seektime),tla
為尋扇區(qū)時(shí)間(latencytimetime),tw
為傳輸時(shí)間(transmissiontime)。磁盤是一種隨機(jī)存儲設(shè)備。
一般情況下,外部排序所需的總時(shí)間由三部分構(gòu)成:內(nèi)部排序(產(chǎn)生初始?xì)w并段)所需時(shí)間(m*tIS
)、外存信息讀寫時(shí)間(d*tIO
)、內(nèi)部歸并所需時(shí)間(s*utmg
)。其中tIS
是為得到一個(gè)初始?xì)w并段進(jìn)行內(nèi)部排序所序的平均時(shí)間,tIO
是進(jìn)行一次外存讀寫的平均時(shí)間,utmg
是對u個(gè)記錄進(jìn)行內(nèi)部歸并所需的時(shí)間,m為初始?xì)w并段的個(gè)數(shù),s為歸并的趟數(shù),d為總的讀寫次數(shù)。但由于訪問外存儲器的時(shí)間開銷太大,即tIO
遠(yuǎn)遠(yuǎn)大于tmg,因此,要提高外部排序速度,就必須減少訪問外存的次數(shù)。
對同一待排序列而言,外部排序訪問外存的總次數(shù)d與歸并的趟數(shù)s成正比,而對m
個(gè)初始?xì)w并段進(jìn)行k路平衡歸并所需的趟數(shù)s=logkm,因此,增加k或減少m均能減少s。
利用敗者樹(treeofloser)可解決這一問題:類似于錦標(biāo)賽排序的思想,在進(jìn)行k路平衡歸并時(shí),將相互比較過的關(guān)鍵字值較大的初始?xì)w并段號(敗者)留在樹結(jié)點(diǎn)中,將關(guān)鍵字值較小的初始?xì)w并段號(勝者)上傳,直到找到最終的勝者(最小值的段號);將其歸并后,其下一記錄將替換它參加新的一輪比賽以找到新的最小值段號;反復(fù)此過程,直至全部k個(gè)初始?xì)w并段合并成一個(gè)有序序列為止。此時(shí)的歸并時(shí)間為log2m(n-1)tmg,與k無關(guān),但k也并非越大越好。§11.3多路平衡歸并的實(shí)現(xiàn)若單純增加k以減少s,將會增加內(nèi)部歸并的時(shí)間utmg
,這將抵銷d隨s減少而得到的效益,如何解決這一矛盾呢?516128305233416283112141781015303856b3b4b0b1b2[0][1][2][3][4]
初始?xì)w并段
0b55555516045165033002830801125058135232334482316316124128018101015291030210120110151529885-路平衡歸并的敗者樹:
例:§11.4置換-選擇排序…
利用置換-選擇排序(replacement-selectionsort)可以達(dá)到這個(gè)目的(也用敗者樹實(shí)現(xiàn)):
置換-選擇排序是在選擇排序的基礎(chǔ)上,當(dāng)最小關(guān)鍵字記錄被選出后,它空出的位置補(bǔ)充進(jìn)一個(gè)新的記錄,以后再求最小記錄時(shí),不能選擇比剛才的最小記錄關(guān)鍵字小的記錄,只能從大于它的記錄中尋找新的最小關(guān)鍵字記錄。反復(fù)此過程,直至工作區(qū)中所有記錄的關(guān)鍵字均比剛出去的最小記錄的關(guān)鍵字小為止,此時(shí)得到的就是一個(gè)完整的初始?xì)w并段。
除了增加k可以減小s外,減小m也是減小s的另一有效途徑。但減小m就意味著要增加初始?xì)w并段長度,這又受到計(jì)算機(jī)內(nèi)存大小的制約,又該如何解決這個(gè)問題呢?設(shè)計(jì)算機(jī)工作區(qū)大小為W=5,試給出下面待排序列利用置換-選擇排序得到的初始?xì)w并段:{23,45,12,5,2,6,27,39,16,44,55,24,1,13,78,123,4,21,66,168,35,3,18,33,96,51,49,72,22,41}。
例:初始?xì)w并段1為:2,5,6,12,16,23,27,39,44,45,55,78,123初始?xì)w并段2為:1,4,13,21,24,35,66,96,168初始?xì)w并段3為:3,18,22,33,41,49,51,72可見,利用置換-選擇排序所得到的初始?xì)w并段數(shù)明顯比直接用選擇排序少得多。如上面的例子,直接用選擇排序要生成六個(gè)初始?xì)w并段,但利用置換-選擇排序后,只得到了三個(gè)歸并段。
那么,利用置換-選擇排序到底能使初始?xì)w并段的長度增加多少呢?
E.F.Moore用類比的辦法解決了這個(gè)問題:設(shè)天上正勻速地下著大雪,有一臺掃雪機(jī)也勻速地沿著一個(gè)環(huán)形跑道在掃雪,當(dāng)達(dá)到某一平衡點(diǎn)時(shí),單位時(shí)間內(nèi)掃雪機(jī)掃去的雪和天上下的雪的量正好相等,跑道上的積雪量保持不變,則積雪形成了一個(gè)斜面:掃雪機(jī)前面的積雪厚度最大,掃雪機(jī)后面的積雪厚度為零。此時(shí)跑道上的積雪量就相當(dāng)于計(jì)算機(jī)的工作區(qū)大小W,而掃雪機(jī)工作一圈所掃去的積雪量就相當(dāng)于初始?xì)w并段的長度——2W。生成初始?xì)w并段的時(shí)間(不考慮輸入輸出)為O(nlogW)。§11.5緩沖區(qū)及并行操作設(shè)定相應(yīng)的輸入輸出緩沖區(qū),讓輸入、輸出和內(nèi)部歸并三種操作同時(shí)進(jìn)行(并行操作),也能提高總的外部排序時(shí)間。但增加緩沖區(qū)數(shù)目,必將減小工作區(qū)大小W,又使得初始?xì)w并段長度減小從而增加排序總時(shí)間。因此,外部排序總的時(shí)間與歸并排序路數(shù)k的選擇、緩沖區(qū)大小的設(shè)置以及各種外設(shè)參數(shù)的設(shè)置等有關(guān),實(shí)際應(yīng)用時(shí)要綜合考慮各種因數(shù)?!?1.6最佳歸并樹
用置換-選擇排序得到的初始?xì)w并段長度各不相同,那應(yīng)如何進(jìn)行k路平衡歸并呢?這實(shí)際上是建立k叉霍夫曼樹的問題:當(dāng)初始?xì)w并段總數(shù)不足((m-1)MOD(k-1)≠0)時(shí),需附加k-(m-1)MOD(k-1)-1個(gè)長度為零的虛段,亦即第一次歸并時(shí)只對(m-1)MOD(k-1)+1個(gè)初始?xì)w并段歸并。建立k叉霍夫曼樹每次仍是選擇記錄數(shù)相對少的初始?xì)w并段先進(jìn)行歸并。最佳歸并樹不適合磁帶歸并排序。作業(yè)34.
已知某文件經(jīng)過置換-選擇排序之后,得到長度分別為47,9,39,18,4,12,23和7的八個(gè)初始?xì)w并段。試為3-路平衡歸并設(shè)計(jì)一個(gè)讀寫外存次數(shù)最少的歸并方案,并求出總的讀寫外存次數(shù)?!?1.7磁帶歸并排序前面所介紹的各種技術(shù)除最佳歸并樹外均適合于磁帶歸并排序,但由于磁帶是順序存取設(shè)備,在實(shí)現(xiàn)外部排序時(shí),有些特殊的問題需考慮。一、平衡歸并
實(shí)現(xiàn)k-路平衡歸并,需要2k臺磁帶機(jī),其中k臺用于輸入,k臺用于輸出,待一趟歸并完后,輸入磁帶機(jī)改為輸出磁帶機(jī),輸出磁帶機(jī)也改為輸入磁帶機(jī),再進(jìn)行下一趟歸并;反復(fù)此過程,直至全部記錄歸并為一段有序序列。二、多步歸并
仔細(xì)分析一下磁帶k-路平衡歸并可以發(fā)現(xiàn),其實(shí)只執(zhí)行一趟k-路歸并并不需要2k臺磁帶機(jī),只需k+1臺磁帶機(jī)即可,多余的磁帶機(jī)目的是為了下一趟歸并。當(dāng)然,只用k+1臺磁帶機(jī)也能實(shí)現(xiàn)k-路平衡歸并,即在每趟歸并完后,再將各輸出歸并段(在同一磁帶機(jī)上)分配到k臺磁帶機(jī)上用于下一趟歸并。但這需要花費(fèi)很多時(shí)間,有沒有更好的辦法呢?
多步歸并排序(polyphasemerging
sorting)能解決這個(gè)矛盾。與平衡歸并不同,一趟多步歸并不是文件中的全部記錄都參與歸并。設(shè)有4臺磁帶機(jī)和17個(gè)初始?xì)w并段,采用3-路多步歸并排序,其歸并過程為:
例:
3-路多步歸并效率比3-路平衡歸并差,但比2-路平衡歸并強(qiáng)。那么,初始?xì)w并段又是如何分配在各磁帶機(jī)上的呢?利用k-階廣義費(fèi)波拉契序列,當(dāng)初始?xì)w并段總數(shù)為某一費(fèi)波拉契數(shù)(不足用虛段填充)時(shí),各磁帶機(jī)上分布的初始?xì)w并段數(shù)由下式給出:t1(k)
=fj-1(k)+fj-2(k)+fj-3(k)+…+fj-k
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45164-2024熔模鑄件缺陷分類及命名
- 二零二五年度百貨商場停車場管理合同樣本3篇
- 二零二五版員工股權(quán)激勵與管理合同模板3篇
- 二零二五年防盜門研發(fā)、生產(chǎn)、銷售一體化合作協(xié)議3篇
- 2024版家具經(jīng)銷商合作協(xié)議范本
- 二零二五年度音樂器材行業(yè)標(biāo)準(zhǔn)制定與執(zhí)行合同3篇
- 2024版云計(jì)算服務(wù)租賃合同
- 二零二五版?zhèn)€人子女教育還借款合同3篇
- 2024版前期物業(yè)服務(wù)管理協(xié)議
- 二零二五版體育健身器材研發(fā)與銷售合同3篇
- 內(nèi)鏡下粘膜剝離術(shù)(ESD)護(hù)理要點(diǎn)及健康教育課件
- 2024年民族宗教理論政策知識競賽考試題庫及答案
- 項(xiàng)目七電子商務(wù)消費(fèi)者權(quán)益保護(hù)的法律法規(guī)
- 品質(zhì)經(jīng)理工作總結(jié)
- 供電搶修述職報(bào)告
- 集成電路設(shè)計(jì)工藝節(jié)點(diǎn)演進(jìn)趨勢
- 新型電力系統(tǒng)簡介演示
- 特種設(shè)備行業(yè)團(tuán)隊(duì)建設(shè)工作方案
- 眼內(nèi)炎患者護(hù)理查房課件
- 肯德基經(jīng)營策略分析報(bào)告總結(jié)
- 買賣合同簽訂和履行風(fēng)險(xiǎn)控制
評論
0/150
提交評論