日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

外排序

發布時間:2025/4/16 编程问答 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 外排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

外排序(External sorting)是指能夠處理極大量數據的排序算法。通常來說,外排序處理的數據不能一次裝入內存,只能放在讀寫較慢的外存儲器(通常是硬盤)上。外排序通常采用的是一種“排序-歸并”的策略。在排序階段,先讀入能放在內存中的數據量,將其排序輸出到一個臨時文件,依此進行,將待排序數據組織為多個有序的臨時文件。然后在歸并階段將這些臨時文件組合為一個大的有序文件,也即排序結果。

外排序的一個例子是外歸并排序(External merge sort),它讀入一些能放在內存內的數據量,在內存中排序后輸出為一個順串(即是內部數據有序的臨時文件),處理完所有的數據后再進行歸并。比如,要對 900 MB 的數據進行排序,但機器上只有 100 MB 的可用內存時,外歸并排序按如下方法操作:

1. 讀入 100 MB 的數據至內存中,用某種常規方式(如快速排序、堆排序、歸并排序等方法)在內存中完成排序。

2. 將排序完成的數據寫入磁盤。

3. 重復步驟 1 和 2 直到所有的數據都存入到不同的 100 MB 的塊(臨時文件)中。在這個例子中,有 900 MB 數據,單個臨時文件大小為 100 MB,所以會產生 9 個臨時文件。

4. 讀入每個臨時文件(順串)的前 10 MB ( = 100 MB / (9 塊 + 1))的數據放入內存中的輸入緩沖區,最后的 10 MB 作為輸出緩沖區。(實踐中,將輸入緩沖區適當調小,而適當增大輸出緩沖區能獲得更好的效果。)

5. 執行九路歸并算法,將結果輸出到輸出緩沖區。一旦輸出緩沖區滿,將緩沖區中的數據寫出至目標文件,清空緩沖區。直至所有數據歸并完成。

【學習資料】 《維基百科》

總結

以上是生活随笔為你收集整理的外排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。