此嵌套的for循环的时间复杂度是多少?

时间:2020-11-10 20:09:54

标签: time-complexity big-o

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

Begin
  sum = 0
  For i = 1 to n do
     For j = i to n do
       sum = sum + 1
End

我想说O(n)= 2n ^ 2 +1,但是由于i = j部分,我不确定。

1 个答案:

答案 0 :(得分:1)

您的答案是正确的!

嵌套循环本能地将您引向正确的答案,即O(n^2)。在进行Big-O分析时,通常并不需要具体说明这一点,即说时间复杂度是O(2n^2)O(3n^2 + 1)-说O(n^2)就足够了,因为这是主要的该功能的任务。

i = j条件只是简单地做到了...

  1. i = 1:n次操作
  2. i = 2:(n-1)个操作
  3. ...
  4. i = n:1操作

因此,您执行的所有操作之和为1 + 2 + ... n = n(n+1)/2,即O(n^2)