→ gigayaya: 應該是1的地方錯了吧 假設k=10 n=2 會有2 2 2 2 2個data12/23 17:55
→ gigayaya: 然後你做完第一輪後 是4 2 2 2, 4在跟2 merge12/23 17:55
→ gigayaya: 所以你每一輪的merge跟k沒關系 是跟n有關 他又說merge12/23 17:56
→ gigayaya: 在linear time, 所以merge的time是n n作k回=O(nk)12/23 17:57
→ yupog2003: 最後一次做merge的時候會花O((k-1)*n/k),感覺這時候12/23 17:58
→ yupog2003: 不能說bound在O(n/k)12/23 17:58
→ yupog2003: 但每次merge都被bound在O(n)是肯定的12/23 18:00
推 yupog2003: 這樣子想好了,第一次是O(n/k),第二次是O(2*n/k)...12/23 18:02
→ yupog2003: 把每一次加起來就是O(n/k)+O(2*n/k)+...+O((k-1)*n/k)12/23 18:03
→ yupog2003: =n/k*(1+2+3+...+k-1) 12/23 18:03
→ yupog2003: =O((n/k)*k*(k-1)/2)=O(n*k)12/23 18:04
→ yupog2003: 第二行忘記用big-O包起來了12/23 18:05
恩...是我merge的地方想錯了最慘狀況不會只有n/k次比較QQ
※ 編輯: newpuma (223.140.213.159), 12/23/2016 20:22:29