1 for i = 1 to n
2 for j = i to n
3 for k = 1 to j
4 statements which take O(1) time
请帮我查一下以下代码段的时间复杂度。是O(n ^ 3)?我想不是因为第3行依赖于第2行。我真的很难过,我需要你的帮助。请提供解决方案。非常感谢你!
答案 0 :(得分:0)
最初的想法:我认为n * n * logN?
编辑:最内层,k,将在下一次,1和2,然后下一次,1和2和3 ...将达到1,这是线性的...它只是在某个间隔停止。由于它是线性的,我自然会说N ...
所以,在考虑之后,O(n ^ 3)?
答案 1 :(得分:0)
你可以这样想:
在
中占据循环的一半 i = n/2
for i = 1 to n
for j = i to n
for k = 1 to j
statements which take O(1) time
第一个正在运行
n/2 times
第二个也运行
n/2 times(n-n/2)
,第三个也运行
n/2 times (1 to n/2)
因此,在这种情况下,n/2*n/2*n/2
正在提供(n^3)/8
O(n^3)