这个伪代码的运行时间

时间:2012-06-28 16:02:27

标签: time time-complexity

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行。我真的很难过,我需要你的帮助。请提供解决方案。非常感谢你!

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)