學習乙個演算法題過程中涉及到外排序,就把外排序的知識複習一遍。複習中對趟數計算,我似乎覺得應該很好理解,但又好像不能透徹的理解,就問自己能不能給出乙個清晰的證明。嘗試了進一步的理解。
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 進度計畫編制 分析活動時間排序 活動所需時間和資源以做出專案進度計...