c 中的时间复杂度(嵌套循环)

Time complexity in c (nested loop)

我很难弄清楚这两个代码的时间复杂度。

c = 0;
for (i = 0; i < n*n; i++) 
for (j = 0; j < i; j++) 
 c = c + 1; 

上面代码中外层循环的时间复杂度是n^2,在内层循环中很难找到。

j = 1; c = 0;
for(i = 1; i <= n; i = i + 1) { 
 for(k = 1; k <= j; k = k + 1) { 
 c = c + 1; 
 } 
j = j * 2; 
}

在第二个代码中我认为外循环的时间复杂度是n,内循环是2^n。 我认为这两个 ((n)*2^n) 的倍数是整个时间复杂度。 这样对吗? 感谢阅读

第一个有 O(n^4),因为 (n*n)^2。第二个有 O(n * 2n)=O(n^2).

在第一个代码中,您从 1 迭代到 n^2。这意味着您的迭代次数是 0、1、2、3,.......n*n - 1。AP 中的这个系列。

 Sum of series in AP = N(N+1)/2 = n^2(n^2+1)/2
 Time Complexity is O(n^4)

在第二个代码中,您从 1 迭代到 n。因此,内部循环将相应地迭代 1、2、4、...2^n。这个系列在 GP

 Sum of series in GP = a(r^n-1)/r-1 = 2^n
 Time complexity is O(2^n)