嵌套for循环的T(n)时间复杂度

时间:2015-10-21 21:32:22

标签: algorithm time big-o time-complexity

void foo (int n, int val)
{
   int b,c;                                //+1
   for (int j = 4; j < n; j++)             //n  
   {
      for (int i = 0; i < j; i++)          //n 
      {
           b = b * val;                    // +1
           for (int k = 0; k < n; ++k)     // n 
                c = b + c;
      }
   }
}

我有上面的代码,当我尝试解决它时,我得到了T(n)的各种答案。从我的各种答案(n 3 -7n 2 +2)/ 2和((n 3 -5n 2 + 6n)/ 2)+ 2n - 6,我得出结论O(n)是O(n 3 )。我只需要找到正确的T(n)。

1 个答案:

答案 0 :(得分:0)

现在是凌晨4点,所以也许我在胡说八道,但我认为是:

第一个是n-3次迭代

第二个是4 + 5 + 6 + 7 + ... + n-1次迭代=&gt; 1/2(n² - n - 12)

第三个是n次迭代

(n-3)*(1/2(n 2 -n-12))* n =&gt;的为O(n ^ 4)