[問題] Big Oh running time

作者: triumphant10 (yu12510)   2019-03-18 22:53:22
sum = 0;
for (i = 0; i < n; i++){
for (j = 0; j < i*i; j++){
if (j % i == 0){
for (k = 0; k < j; k++){
sum++;
}
}
}
}
大家好
這題的Big O 我算出來得到的是 O(n^4),不曉得對不對?
以及
想問一下各位都是如何去思考這種題目的?
如果要嚴謹一點的寫法該如何是好?
想問各位的思路
謝謝!
作者: fatcat8127 (胖胖貓)   2019-03-19 01:49:00
你的程式碼可以以if的判斷式是否成立分兩部分簡化外圈的兩個for迴圈只有當j是i的倍數時才會進到if判斷判斷式內的k每次只會讓sum+1https://www.codepile.net/pile/oGA3Lq731x2+(1+2)x3+(1+2+3)x4+(1+2+3+4)x5...的累加每項都是n*(n-1)/2,可以再化減成算式即可O(1)求值
作者: triumphant10 (yu12510)   2019-03-19 02:21:00
謝謝你!我看懂了!
作者: fatcat8127 (胖胖貓)   2019-03-19 10:04:00
我看到你在C++版的文發現好像誤會你的意思惹0.0
作者: triumphant10 (yu12510)   2019-03-19 14:31:00
我有懂你想表達的,雖然不是我想問的XD 嘻嘻

Links booklink

Contact Us: admin [ a t ] ucptt.com