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
bej=2*j
?应该i=2*j
bej=2*j
?