Time complexity 带j<;的嵌套for循环的时间复杂度=我条件

Time complexity 带j<;的嵌套for循环的时间复杂度=我条件,time-complexity,big-o,Time Complexity,Big O,我在一项任务中提出了这个问题 确定嵌套循环的时间复杂度 for(int i=1; i<=n; i=2*i){ for(int j=1; j<=i; i=2*j){ stuff } } for(int i=1;i内部循环运行log(i)+1次次(log base 2) 添加外部循环,对上述i=1,2,4,…n求和 所以:(log(1)+1)+(log(2)+1)+(log(4)+1)+…+(log(n)+1) 这是:1+2+3+…+log(n) 使用算

我在一项任务中提出了这个问题

确定嵌套循环的时间复杂度

for(int i=1; i<=n; i=2*i){
    for(int j=1; j<=i; i=2*j){
        stuff
    }
}

for(int i=1;i内部循环运行
log(i)+1次
次(log base 2)

添加外部循环,对上述i=1,2,4,…n求和

所以:
(log(1)+1)+(log(2)+1)+(log(4)+1)+…+(log(n)+1)

这是:
1+2+3+…+log(n)


使用算术级数的和是:
(log(n)+1)*(log(n)+2)/2=(log(n)*log(n)+3log(n)+2)/2=O(log(n)*log(n))
内部循环运行
log(i)+1次(log base 2)

添加外部循环,对上述i=1,2,4,…n求和

所以:
(log(1)+1)+(log(2)+1)+(log(4)+1)+…+(log(n)+1)

这是:
1+2+3+…+log(n)


使用算术级数的和是:
(log(n)+1)*(log(n)+2)/2=(log(n)*log(n)+3log(n)+2)/2=O(log(n)*log(n))
假设n=16,那么我将有值
i=1、2、4、8、16

所以:我基本上是把值取为log(n),即log(16),即五次迭代

现在对于j的值,它取的值是
log(1)+log(2)+log(4)+log(8)+log(16)
,在每次迭代中它基本上等于log(i)

因此,结合我们从上述两个语句中得到的值,我们可以说上述代码的时间复杂度是
O(log(n)*log(i))


这是我对代码的理解。

让我们假设n=16,那么我将有值
i=1,2,4,8,16

所以:我基本上是把值取为log(n),即log(16),即五次迭代

现在对于j的值,它取的值是
log(1)+log(2)+log(4)+log(8)+log(16)
,在每次迭代中它基本上等于log(i)

因此,结合我们从上述两个语句中得到的值,我们可以说上述代码的时间复杂度是
O(log(n)*log(i))


这是我对代码的理解。

应该
i=2*j
be
j=2*j
?应该
i=2*j
be
j=2*j