我在我的程序中使用此算法:
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
对吗?三个循环一起怎么样?
答案 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)
正式地,您可以执行以下操作: