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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

编程珠玑读书笔记之磁盘文件排序

發布時間:2023/12/13 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编程珠玑读书笔记之磁盘文件排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

輸入:

所輸入的是一個文件,至多包含n個正整數,每個正整數都要小于n,這是 n = 10^7。如果輸入時某個整數出現了兩次,就會產生一個致命的錯誤。這些整數與其他任何數據都不關聯。

輸出:

以增序形式輸出的經過排序的整數列表。

基本思想:使用一個具有一千萬位的字符串表示該文件,在該字符串中,當且僅當整數i在該文件中時,第i個位才打開(設為1)。解決該問題的過程可以分為三個自然階段。第一個階段關閉所有的位,將集合初始化為空集。第二個階段讀取文件中的每個整數,并打開相應的位,建立該集合。第三個階段檢查每個位,如果某個位是1,就寫出相應的整數,從而創建已排序的輸出文件。如果n是向量中位的數目(在本例中是10000000),該程序可以用偽碼如下表示:

/*phase 1: initialize set to empty */
for i = [0, n]
??? bit[i] = 0;
/*phase 2: insert present elements into the set */
for each i in the input file
??? bit[i] = 1;
/*phase 3: write sorted output */
for i = [0,n)
??? if bit[i] == 1
???????? write i on the output file

原則:

位圖數據結構 此數據結構代表了有限域中的稠集(dense set),每一個元素至少出現一次,沒有其他的數據和元素相關聯。即使不滯這些條件(例如存在多重元素或額外數據時),也可以使用有限域中的鍵作為表索引(表具有更復雜的條目)

多通道(Multiple-Pass)算法 這些算法具有多個輸入數據的通道,每讀一次就向完成前進一步。

時間和空間的權衡 二者不可偏廢。

簡單的設計 與復雜程序相比,簡單程序通常要更加可靠、安全、健壯和有效些,構建和維護時也要更加容易一些。

Technorati Tags: 編程珠璣,算法,排序,磁盤排序

轉載于:https://www.cnblogs.com/jcleung/archive/2011/05/12/2044069.html

總結

以上是生活随笔為你收集整理的编程珠玑读书笔记之磁盘文件排序的全部內容,希望文章能夠幫你解決所遇到的問題。

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