外部排序

整理自《數(shù)據(jù)結(jié)構(gòu)高分筆記》

1、概念和流程

基本概念
所謂外部排序,即對(duì)外存中的記錄進(jìn)行排序(相對(duì)于內(nèi)部排序而言),有了內(nèi)部排序算法,為什么還需要外部排序?因?yàn)橥獯嬷杏涗浺?guī)模太大,內(nèi)存放不下。外部排序可以概括為一句話:將內(nèi)存作為工作空間回來輔助外存數(shù)據(jù)的排序。

流程解析
外部排序最常用的算法是歸并排序,是因?yàn)樗恍枰獙⑷康挠涗浂甲x入內(nèi)存就可以完成排序,因此,可以解決由于內(nèi)存空間不足導(dǎo)致的無法對(duì)大規(guī)模記錄進(jìn)行排序的問題。

1)將這組記錄假設(shè)為n個(gè),分為m個(gè)規(guī)模較小的記錄段(記錄段的長(zhǎng)度不一定相等),并對(duì)這些小記錄段進(jìn)行排序,一般情況下這些記錄段都足夠小,可以整段讀入內(nèi)存并選擇合適的排序算法對(duì)其排序。

2)將m個(gè)有序記錄每k個(gè)分為一組,得到ceil(m/k)組記錄段,取其中一組,假設(shè)k=5,如下圖所示,每行一段,將每段的段首的記錄讀入內(nèi)存,如圖中灰色的所示:

3)用某種方法從讀入內(nèi)存的這組記錄中選出最小的,比如下面我們選擇1.

4)將上一步選出的最小值寫回外存,并將其所在記錄段的次小值讀入內(nèi)存補(bǔ)上空位置,如圖:

5)重復(fù)以上過程

6)當(dāng)此組記錄全部導(dǎo)出之后,就會(huì)在外存中得到一個(gè)較長(zhǎng)的有序記錄段。以此方法將剩下的所有組記錄段都?xì)w并成為較長(zhǎng)的記錄段,就得到了ceil(m/k)個(gè)較長(zhǎng)的有序記錄段,然后按照上面同樣的方法分組、歸并、排序,并重復(fù)此過程,就可以完成對(duì)這n個(gè)記錄的排序。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 八、外部排序 前面第七章介紹了內(nèi)部排序需要把待排序數(shù)據(jù)全部放入內(nèi)存中,然后再排序。這就限制了待排序數(shù)據(jù)的規(guī)模。當(dāng)數(shù)...
    MinoyJet閱讀 356評(píng)論 0 1
  • 春招的時(shí)候在某養(yǎng)豬場(chǎng)面試,面試官問了一個(gè)問題:“如何用256M內(nèi)存的機(jī)器對(duì)一個(gè)2G的數(shù)據(jù)進(jìn)行排序”。之前沒看過這方...
    微辣雞米飯閱讀 10,380評(píng)論 3 17
  • 基本思想:將外部數(shù)據(jù)分成若干份,分別移動(dòng)到內(nèi)存進(jìn)行排序后輸出。再歸并排序。鏈接1:http://blog.csdn...
    yingtaomj閱讀 1,019評(píng)論 0 0
  • 因?yàn)橹熬蛷?fù)習(xí)完數(shù)據(jù)結(jié)構(gòu)了,所以為了保持記憶,整理了一份復(fù)習(xí)綱要,復(fù)習(xí)的時(shí)候可以看著綱要想具體內(nèi)容。 樹 樹的基本...
    牛富貴兒閱讀 7,524評(píng)論 3 10
  • 作者|劉芳棟 編輯|李沿欣 討論:你認(rèn)為未來機(jī)器人數(shù)量會(huì)超過世界人口數(shù)量嗎?歡迎留言討論。 金融危機(jī)過后,全球各個(gè)...
    EMBA隨堂筆記閱讀 455評(píng)論 1 0

友情鏈接更多精彩內(nèi)容