嵌套用于函数调用的循环时间复杂度

时间:2017-01-17 15:39:00

标签: algorithm time-complexity

 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)

我是否正确分析了复杂性?

1 个答案:

答案 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)