外排序時間估計和趟數計算的理解

2021-06-01 23:32:12 字數 1364 閱讀 9941

學習乙個演算法題過程中涉及到外排序,就把外排序的知識複習一遍。複習中對趟數計算,我似乎覺得應該很好理解,但又好像不能透徹的理解,就問自己能不能給出乙個清晰的證明。嘗試了進一步的理解。

i估計外排序的時間。

某檔案共10000個記錄,設每個物理塊可以容納200個記錄,記憶體緩衝區可以容納5個物理塊

1)經過10次內排序後得到10個初始歸併段r1~r10

2)採用兩路歸併,需四趟可以得到排好序的檔案

r1  r2 r3  r4  r5 r6  r7  r8 r9  r10

r1』     r2』      r3』     r4』     r5』

r1』』             r2』』         r3』』

r1』』』                 r2』』』

r1』』』』

10個初始段的內部排序時間是10

總的i/o時間的估計方法。

計算產生r1的i/o時間。為得到r1,r1包含的5個物理塊都要被讀入記憶體,然後再寫到硬碟,所以時間是10

計算產生r1』的時間。為得到r1』,r1和r2的所有塊都有被陸續讀入記憶體,並陸續寫入硬碟,所以i/o時間是(5+5)*2=20所以得到r1』到r5』的總的時間是100

計算產生r1』』的時間。為得到r1』』,r1』和r2』的所以塊都要被陸續讀入記憶體,並陸續寫入硬碟,所以i/o時間是(10+10)*2=40

類似,得到r1』』』的i/o時間是(20+20)*2=80

類似,得到r1』』』』的i/o時間是(40+10)*2=100

所以,總的i/o時間是(100+100+80+80+100)=460

總的歸併時間。(10000+8000+8000+10000)=46000

ii.m個初始歸併段,k路歸併的趟數s=

結論1:如果乙個k路歸併段集合的總歸並段數是

證明:進行第一趟歸併,歸併段總數是

進行第二趟歸併,歸併段總數是

進行第s-1趟歸併,歸併段總數是k。

進行第s趟歸併,得到乙個有序歸併段。

所以歸併趟數是s。結論得到證明。

結論2:所有k路歸併段集合的總歸並段數在區間

證明:假設歸併集的歸併段總數是

假設乙個歸併段集合的歸併段總數是m,

結論3:所有k路歸併集合的總歸並段數在區間

證明:i. r=1時,由上面的結論得到證明。

ii. 假設r=n是結論成立,即某個歸併段集合總數在

iii. 證明r=n+1時結論成立。假設乙個歸併集合的歸併段總數是

假設乙個歸併段集合總數為

最終結論得到證明。

結論4:歸併集合有m個初始歸併段,k路歸併的趟數s=

證明:如果m是k的整數次冪。即存在正整數r,

如果m不是k的整數次冪。令

內排序和外排序

內排序 指在排序期間資料物件全部存放在記憶體的排序。外排序 指在排序期間全部物件太多,不能同時存放在記憶體中,必須根據排序過程的要求,不斷在內,外存間移動的排序。根據排序元素所在位置的不同,排序分 內排序和外排序。內排序 在排序過程中,所有元素調到記憶體中進行的排序,稱為內排序。內排序是排序的基礎。...

排序的一些方法(穩定性,內外排序,時間空間複雜度)

首先,我們經歷了這麼乙個問題 在對大量資料進行排序的時候,不僅僅是乙個小陣列,而是萬級,百萬級,億級。資料條數的多了的時候,我們自然就想到了大資料。雖然我們 學習的是前端,但是涉及到處理效能效率的時候,層次就上去了。c這門語言比起js更底層,更 嚴格,這裡引入乙個鏈結對比了 1 對於評述演算法優劣術...

排序 時間倒序 時間管理你知道多少

1專案時間管理由哪些過程組成?過程間關係是怎麼樣的?1 活動定義 指確認一些特定的工作 通過完成這些活動就完成了工程專案的各項細節工作 2 活動排序 明確各活動間的相互聯絡性 前後 並列等 3 活動時間估計 估計各活動所需的時間 4 進度計畫編制 分析活動時間排序 活動所需時間和資源以做出專案進度計...