哪位牛人能解釋一下one-pass sort,multi-pass sort具體的實現方法。

wei-xh發表於2010-06-20
十個數,在表裡的順序是:9 6  0 1  4 7 5 8 2 3

假定記憶體排序每次對四個數進行

1)  9 6 0 1 在記憶體排序後為0 1 6 9,排序後寫入臨時段,按照專業的叫法,這個叫sort run 1
2) 4 7 5  8 在記憶體排序後為4 5 7 8,排序後寫入臨時段,sort run 2.
3) 2 3 在記憶體排序後為2 3 ,排序後寫入臨時段,sort run 3

然後再把這三個有序的段依次merge進記憶體裡,最後形成一個有序的的結果集。


這可能就是所謂的一路排序。

多路排序的情況是,可能這三個有序的段,不能一次的讀入到記憶體中,那麼可能的結果就是讀入了前兩個有序段,排序後,把其中一個寫入磁碟,再讀入第三個。

前兩段排序後的結果為:
0 1 4 5 6 7 8 9

然後把6 7 8  9 寫入到臨時段,拿sort run 3再和第一段0 1 4 5 進行排序 0 1 2 3 4 5 。

至此記憶體中的資料加上臨時段的資料就形成了一個有序的結果集。


這是隻我的妄自猜測,還希望有知道的大俠。給出解答。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22034023/viewspace-665730/,如需轉載,請註明出處,否則將追究法律責任。

相關文章