这段代码片段的最坏情况分析是什么?

时间:2011-01-30 17:18:30

标签: java algorithm big-o performance

sum = 0;
for (int i = 0; i < N; i++)
  for(int j = 0; j < i*i; j++)
    sum++;

我不完全确定我的答案;我认为内循环运行i ^ 2操作,外循环运行N次,所以最终的答案是O(N ^ 3)?

2 个答案:

答案 0 :(得分:3)

操作次数为sum = 1 + 4 + 9 + ... + N^2。这是因为当i = 0时,j将自己增加0次。当i = 1时,j会自行增加一次。当i = 2时,j会自行增加4次,依此类推。

此总和等于N(N + 1)(2N + 1)/6,因此算法确实是O(N^3)。你可以通过归纳法prove这个公式。

答案 1 :(得分:0)

对我而言(渐近)。