循环的三重复杂性

时间:2013-12-20 19:26:33

标签: complexity-theory big-o time-complexity

for(I = 0; I < n; I++)
 for(j = I; j < n; j++)
  for(k = I; k < n; k++)
   statement;

外循环运行n次。 第二次循环运行(n-I)次= n(n-1)/ 2次。 第3次循环运行(n-I)次= n(n-1)/ 2次。 所以语句将运行(n(n-1)/ 2)^ 2次。 这是对的吗?

2 个答案:

答案 0 :(得分:2)

您可以像这样计算以检查它是否正确

int Cnt = 1; // initialization
for(I = 0; I < n; I++)
 for(j = I; j < n; j++)
  for(k = I; k < n; k++, Cnt++)
   printf ("This is the %dth time\n", Cnt);

答案 1 :(得分:0)

是O(n ^ 3) - 因为

O(n^3+AnyConst*n^2+AnyOtherConst*n+ThirdConst)=O(n^3)

O符号估计渐近行为,因为n变为无穷大,因此,只有增长最快的组件很重要。