Loops 这些嵌套循环的时间复杂性

Loops 这些嵌套循环的时间复杂性,loops,time-complexity,Loops,Time Complexity,关于嵌套for循环的时间复杂性,O(n^2),我遇到过几篇文章。它是否仍然适用于我在下面提到的两种情况 案例1:Second for循环的增量不是1,而是每次迭代都乘以2 for (i = 0; i <= n; i++) { for(j = 1; j <= n; j = j*2) { // Some code } } 在这两种情况下,n都是一个整数。我认为这两种情况下的时间复杂度都是O(n^2)。这就是实际的时间复杂度吗?顶部的是O(n log(n)),底部的是二

关于嵌套for循环的时间复杂性,
O(n^2)
,我遇到过几篇文章。它是否仍然适用于我在下面提到的两种情况

案例1:Second for循环的增量不是1,而是每次迭代都乘以2

for (i = 0; i <= n; i++)
{
  for(j = 1; j <= n; j = j*2)
  {
   // Some code
  }
}
在这两种情况下,
n
都是一个整数。我认为这两种情况下的时间复杂度都是
O(n^2)
。这就是实际的时间复杂度吗?

顶部的是O(n log(n)),底部的是二次的,O(n^2)

两个外循环显然都是线性的,因此问题归结为确定内循环的复杂性并将其与各自的外循环复杂性相乘

对于顶部内部循环,
j
重复加倍,创建序列1、2、4、8、16。。。这个内部循环的总迭代次数是
n
的log2,类似于二进制搜索(或者,重复将
n
除以一半)


对于底部内部循环,迭代从
n/2
运行到
n
。忽略常数因子2,因此这与从
0
迭代到
n
或线性相同。

非常感谢!
for (i = 0; i <= n; i++)
{
  for(j = n/2; j <= n; j++)
  {
   // Some code
  }
}