for(i = 1; i < a; i++){
for(j = 1; j < b; j = j + 3){
if((i+j) % 2 == 0)
Func()
}
}
在这种情况下,我认为它是O(a*b)
和Theta(a*b)
。
我是否正确分析了复杂性?
答案 0 :(得分:1)
首先,你可能意味着
if ((i + j) % 2 == 0)
而不是
if (i + j % 2 == 0)
因为当i
肯定时,j % 2
非否定,然后i + j % 2
肯定因此i + j % 2
从不等于零:Func()
根本不运行。
你的答案是正确的:复杂性是
a * // from the first loop
b / 3 * // from the second loop
1 // from the condition (it always true)
所以你有
Θ(a * b / 3 * 1) = Θ(ab)