Algorithm 这个算法的时间复杂度正确吗?
我已经解决了bellow算法,发现时间复杂度为 O(nlgn*日志(基本3)n)Algorithm 这个算法的时间复杂度正确吗?,algorithm,time-complexity,Algorithm,Time Complexity,我已经解决了bellow算法,发现时间复杂度为 O(nlgn*日志(基本3)n) for(a=1;a我恐怕你说错了,第一个算法的时间复杂度是O(n*lgn*log3n)。它是O(n2*log3n)。用于b的循环在O(n)中运行,而不是在O(lgn)中运行 在第二个算法中,让我们看一下c循环,它是Tc=O(n)。如果省略c循环,我们实际上会减少O(n)中的时间,因此c循环将n的乘数带入时间复杂度公式 让我们看一下a和bb取决于a的值。执行b循环体的次数是 Ta,b=1+4+9+16+…+n2 这是
for(a=1;a我恐怕你说错了,第一个算法的时间复杂度是O(n*lgn*log3n)。它是O(n2*log3n)。用于b
的循环在O(n)中运行,而不是在O(lgn)中运行
在第二个算法中,让我们看一下c
循环,它是Tc=O(n)。如果省略c
循环,我们实际上会减少O(n)中的时间,因此c
循环将n
的乘数带入时间复杂度公式
让我们看一下a
和b
b
取决于a
的值。执行b
循环体的次数是
Ta,b=1+4+9+16+…+n2
这是一个众所周知的自然数平方和公式
&和;n2=n(n+1)(2n+1)/6=O(n3)
最终我们做到了
Ta,b,c=Ta,b*Tc=O(n3)*O(n)=O(n4)
我看到你出于某种原因将n/2
与O(lgn)联系起来。循环for(I=1;iaha我现在明白了!非常感谢
for (a=1;a<=n;a++)
for (b=1;b<=n/2;b++)
for (c=1;c<=n;c*=3)
print("A")
for (a=1;a<=n;a++)
for (b=1;b<=a^2;b++)
for (c=1;c<=n/2;c++)
print("A2")