[理工] 100 清大計科 第二題

作者: pyramidinc (PyramidInc)   2019-12-11 11:27:43
https://i.imgur.com/XJwuUoF.jpg
請問這題怎麼算?有爬過文但還是不太懂。
第一小題我的想法是分成兩步驟:
1.quick sort:
因為每條有k個元素,所以worst case是k^2,然後做n/k次 =》總共k^2 * (n/k)
2. merge:
共有n/k條,每回合兩兩比較,最多比較k次,要merge log(n/k)回合=》總共 k*log(n/k)
請問這樣的想法哪裡有錯嗎?
還有借問一下有人有比較完整的資結解答嗎?手寫題的解答真的好難找qq
或是有人有寫題的群可以讓小弟我加的嗎,謝謝。
作者: cossetannie (paa)   2019-12-11 12:17:00
merge最多是比較n個
作者: pyramidinc (PyramidInc)   2019-12-11 12:20:00
我發現我有地方好像想錯 每條k個元素 這樣兩條拿來merge最多比2k-1次 然後每回合都是兩兩merge 總共要log(n/k) 回合 但感覺這樣答案還是不對
作者: jeremyyuan (阿元)   2019-12-11 13:16:00
作者: pyramidinc (PyramidInc)   2019-12-11 13:31:00
請問為什麼是n*log(n/k) ?
作者: jeremyyuan (阿元)   2019-12-11 14:37:00
n個data 最多比n-1次喔
作者: a9778875 (Mine)   2019-12-11 14:44:00
作者: pyramidinc (PyramidInc)   2019-12-11 16:03:00
所以是兩兩比對時因為每條k個最多2k次 總共n/k條 兩兩比對的話要n/2k 組 每組又是2k次 相乘就是n 不知道我這樣理解有沒有錯?
作者: jeremyyuan (阿元)   2019-12-11 16:21:00
每條k個 最多只會比k次喔
作者: cossetannie (paa)   2019-12-11 16:34:00
用整條是n個去想比較直接一點
作者: pyramidinc (PyramidInc)   2019-12-11 18:18:00
好的 感謝
作者: gash55025502 (白影弓)   2019-12-11 20:19:00
我覺得這裡的merge用selection tree的k-way merge去想比較好想selection tree共要做O(n)回合(因為要output n個data) 每回合需花log(n/k)次比較(樹高)

Links booklink

Contact Us: admin [ a t ] ucptt.com