[理工] 資結題庫

作者: silence0925 (小文青)   2018-11-20 21:44:44
https://i.imgur.com/kieT9XQ.jpg
如圖 答案為什麼不是D 麻煩大大們解惑
作者: nannnnn (nannnnn)   2018-11-20 22:45:00
內層迴圈大概是2i, 譬如說你帶i=4進去,內層會做4+2+1大約為2*4,之後2(1+2+···+n)大概n^2
作者: skyHuan (Huan)   2018-11-20 22:55:00
作者: silence0925 (小文青)   2018-11-21 17:45:00
抱歉s大 我還是不太懂 假如i=4時 goo不是只會跑3次嗎 因為j=i=4 -> 2 ->1 三次 為什麼你們會把他們加起來 那個數字是j等於多少跟次數沒關係不是嗎 麻煩大大解惑https://i.imgur.com/3rtnKG9.jpg
作者: skyHuan (Huan)   2018-11-21 18:14:00
因為j的迴圈要跑goo()題目說goo(m)複雜度是O(m)j你跑的4 -> 2 -> 1要把他都加起來大概就是1+2+2^2+... 共加log i次goo()的部分沒有每次都跑到n,有至少一半的不到n,每次都用n算是nlogn會太大
作者: nannnnn (nannnnn)   2018-11-21 18:53:00
s大 n的次數 因該是取floor是嗎,另外我是看成每次j的迴圈都會執行i當下丟進來的數值的兩倍,所以可以寫成summation i從1到n (2i)
作者: skyHuan (Huan)   2018-11-21 19:32:00
實際好像是logi取floor再多一次,但我會直接挑好算的數字算,少1多1好像不會影響複雜度XD
作者: silence0925 (小文青)   2018-11-21 19:42:00
還是不太懂4 2 1為什麼需要加起來 在I=4時 goo指呼叫了3次 而不是4+2+1次啊抱歉 比較笨想不太懂https://i.imgur.com/4ACN2cW.jpg
作者: nannnnn (nannnnn)   2018-11-21 19:53:00
因為題目有說goo是O(m)假設i為4的那一輪近來,總共會做goo(4),goo(2),goo(1)每次各花O(1),O(2),O(4)的時間,所以i=4的時候總共花了大概c*7,c為常數,以此類推i=5,6,7......加起來
作者: silence0925 (小文青)   2018-11-21 20:00:00
原來如此 了解了 謝謝兩位大大的解釋

Links booklink

Contact Us: admin [ a t ] ucptt.com