For loop 以下嵌套循环依赖项的时间复杂度是多少? count=0; 对于(i=1;i

For loop 以下嵌套循环依赖项的时间复杂度是多少? count=0; 对于(i=1;i,for-loop,time-complexity,big-o,nested-loops,For Loop,Time Complexity,Big O,Nested Loops,您不能在此处直接应用公式1+2+…+n=n(n+1)/2。 5^0+5^1+…+5^m和5^(0+1+…+m)是两件完全不同的事情 序列5^0+5^1+…+5^m是a。使用的公式应为 这意味着5^0+5^1+…5^m=O(5^m)。还要注意5m=n 从m=0到小于2n的log5(n),必须求和5^m。因此运行时处于O(n) 例如,如果n=125,则总和为156(

您不能在此处直接应用公式
1+2+…+n=n(n+1)/2
5^0+5^1+…+5^m
5^(0+1+…+m)
是两件完全不同的事情

序列
5^0+5^1+…+5^m
是a。使用的公式应为

这意味着
5^0+5^1+…5^m=O(5^m)
。还要注意5m=n


从m=0到小于2n的log5(n),必须求和5^m。因此运行时处于O(n)

例如,如果n=125,则总和为156(<2n)


<对于任意n,和小于2n。

我们将考虑循环,其中内循环的迭代数与外环索引

的值无关。 然后,我们将尝试
n
的不同情况,以找出正确的模式:

count=0;
for(i=1;i<=n;i*=5)
  for(j=1;j<=i;j++)
      count++;
外部:15

内部:

n = 125
i=1
:1次

i=5
:5次

1+5=6次,
k=2

n = 5 
外部:1 5 25

内部:

i=1
:1次

i=5
:5次

i=25
:25次

1+5+25=31次,
k=3

n = 25
外部:1525125

内部:

n = 125
1+5+25+125=156次,
k=4

内部:

n = 125
=O(n)

最后,您可以从模式中看到,我们计算的时间复杂度是O(n)

链接到几何级数的时间复杂性解决方案证明:

这是错误的。您忽略了对数行为。@Gartenkrall您是什么意思?sum不应该运行到(n-1)。它应该运行到log(n)。因为结果不同。@Gartenkrall该图像是从Wikipedia复制的,我在其他地方都写了
5^m
。编辑:重新排版图像以避免混淆。但您没有回答循环的复杂度是什么?您的回答与我在上一次测试时在内部循环中测试n的不同情况时得到的模式完全相同代码行很高兴看到括号中的因子是常数。你可以用几何级数的公式向我解释它是如何变成O(n)的吗?是的,你可以从几何级数得出时间复杂度的结论,请参阅更新的答案链接。这段视频非常有助于理解大O计算:谢谢你的帮助:)