为什么这个算法的运行时间是(n^2)*(n^2 + 1)/2(即O(n/4))?

Why is the runtime of this algorithm (n^2)*(n^2 + 1)/2(i.e. O(n/4))?

所以,我的导师给我们的一个问题让我们找到了这个算法的运行时间:

{n > 0}
    i := 1;
    while i ≤ n^2
    j := 1;
    while j ≤ i
        j := j + 1;
    endwhile
    i := i + 1;
endwhile

在解决方案中,这里的运行时间是 n^2(n^2 + 1)/2, 即 Θ(n^4).

所以,我知道第一个 while 循环的运行时间是 n^2,但为什么第二个循环的运行时间是 (n^2 + 1)/2。

在此先感谢您的帮助。

第二个循环执行了 i 次。

因此,如果 i1 变化到 n^2,则运行时间为

1 + 2 + 3 + ... + n^2 

请注意

1 + 2 + ... + k = k*(k+1)/2

因此,如果您将 k 替换为 n^2,您将获得 n^2*(n^2+1) 中的运行时。 我想正确的身份是:

{n > 0}
    i := 1;
    while i ≤ n*n
      j := 1;
      while j ≤ i
        j := j + 1;
      endwhile
      i := i + 1;
endwhile