Loops 我应该如何分析这两种不同代码的时间复杂度分析?
我应该如何分析这两种不同代码的时间复杂度分析Loops 我应该如何分析这两种不同代码的时间复杂度分析?,loops,time-complexity,big-o,complexity-theory,Loops,Time Complexity,Big O,Complexity Theory,我应该如何分析这两种不同代码的时间复杂度分析 sum=0; for(i=1; i<=n; i++) for(j=1; j<=n; j*=2) sum++; sum=0; 对于(i=1;i它们的复杂度都等于O(n logn) 请注意,sum++是O(1)运算 这是因为每次迭代翻倍的一个(在第一个代码中是j,在第二个代码中是i)只会迭代logn次 这里,由于循环变量彼此不依赖,只依赖于n,因此将外循环更改为内循环不会产生任何差异 编辑(基于OP的编辑): 我
sum=0;
for(i=1; i<=n; i++)
for(j=1; j<=n; j*=2)
sum++;
sum=0;
对于(i=1;i它们的复杂度都等于O(n logn)
请注意,sum++是O(1)运算
这是因为每次迭代翻倍的一个(在第一个代码中是j,在第二个代码中是i)只会迭代logn次
这里,由于循环变量彼此不依赖,只依赖于n,因此将外循环更改为内循环不会产生任何差异
编辑(基于OP的编辑):
我不明白你说的几何级数是什么意思。但是,如果你说的是代码的数学行为,我必须补充一点,它不是一个几何级数,因为对于外循环的每一次迭代,内循环都迭代n次
因此,对于logn外部循环迭代,代码的复杂度=O(logn*n*1)=O(nlogn)
此外,内循环不受外循环的影响,因为它仅依赖于n。第一个片段:
第二段:
我是如何得出对数的:
来源:,幻灯片12。我编辑了我的原始帖子。我想知道,第二个代码是否会导致几何级数,因为内部循环的数量似乎受到外部循环的影响?@user2965-我根据您对问题的编辑进行了编辑。请检查您是否清楚。@user2965-如果答案有帮助,请标记answer被接受。如果答案有帮助,也请投票。
sum=0;
for(j=1; j<=n; j*=2)
for(i=1; i<=n; i++)
sum++;