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

What is the time complexity of this nested for loop?

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

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 部分。

你的回答是正确的!

嵌套循环会本能地引导您找到正确答案,即 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)/2O(n^2).