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

标签 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) 的各种答案。从我的各种答案(n3-7n2+2)/2 和 ((n3 -5n2 +6n)/2)+ 2n - 6,我得出的结论是 O(n) 是 O(n3)。我只需要找到正确的 T(n)。

最佳答案

现在是凌晨 4 点,所以我可能在胡说八道,但我的想法是:

第一个for是n-3次迭代

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

第三个for是n次迭代

(n-3)*(1/2(n² - n - 12))*n => O(n^4)

关于algorithm - 嵌套 for 循环的 T(n) 时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33269648/

相关文章:

php - 遇到格式不正确的数值

c - 无限期等待的函数超时(如 listen())

javascript - 在 O(n) 时间内对 (1,2,3) 个数字的数组进行排序

algorithm - 开发人员应该了解离散数学吗?

algorithm - 随机插入随机查询的高效算法

python - 在 Python 中以秒和纳秒为单位获取 POSIX/Unix 时间?

python - 在这种情况下,一个 for 循环是否意味着 n 的时间复杂度?

java - O(log(n)) 和 O(n) 有什么区别或分开?

javascript - 获取等级折扣算法

algorithm - 集合 S of n numbers - 有一个子集,其中 S 的每个元素出现的概率相等