这段代码的时间复杂度是多少?

时间:2011-11-28 12:01:34

标签: time-complexity

我在我的程序中使用此算法:

for( i=0 ; i<N ; i++ )

  for( j=i+1 ; j<N+1 ; j++ )

     for( k=0 ; k<i ; k++ )

          doWork();

任何人都可以帮我找到这个片段的时间复杂度吗? 我想前两个循环是

N*(N+1)/2 
对吗?三个循环一起怎么样?

2 个答案:

答案 0 :(得分:1)

感谢@Tim Meyer纠正我:

简单方程给出(N = 0,1,2,3,4,5,6,7,8 ......)以下系列:0,0,1,4,10,20,35,56, 84 ...,用以下公式解决:

u(n) = (n - 1)n(n + 1)/6 

因此它将具有 O((N-1)N(N + 1)/ 6)时间复杂度,可以简化为 O(N ^ 3)

答案 1 :(得分:0)

正式地,您可以执行以下操作:

enter image description here