[问题] 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