習題1.5

 問題:1MB是嚴格的邊界。

原數據文件稱爲A,輸出文件稱爲B,中間文件稱爲T。

假定讀文件A花費1單位時間,寫同樣多的數據花費2單位時間,在此假設下進行效率分析,並且只考慮讀寫文件的時間,不考慮內存內操作的時間。

方法一:

        分兩次讀入A,仍用位圖方式排序。第一次對 1~8M範圍內的數據排序,第二次對8M+1~10M範圍內的數據排序。第一次排序所得寫到B,第二次排序所得添加到B的後面即可。

        效率:讀兩次A,寫一次B,總花費4單位時間。不用中間文件。

方法二:

        讀入文件A,對1~8M範圍內的數據排序,並對8M+1~10M範圍內的數據寫到T,1~8M範圍內的排序結果寫到B;然後讀入文件T,對其中的數據排序,添加到B。

        效率:讀一次A,讀寫一次T,寫一次B,效率依賴於數據分佈,用到中間文件。

                    數據分佈均勻的情況下,size(T)=1/5 size(A),總花費3.6單位時間。

                    最壞情況下,所有數據都在8M+1~10M範圍內,總花費6單位時間。

方法三:(方法二的優化)

         先申請與A大小的文件作爲B,將8M+1~10M範圍內的數據寫到B的末端,這樣不用中間文件。

發佈了5 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章