这个嵌套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 条件简单地使得有...
- i=1:
n
操作
- i=2:
(n-1)
操作
- ...
- i=n:
1
操作
所以,你所做的所有操作的总和是 1 + 2 + ... n
= n(n+1)/2
即 O(n^2)
.
这些代码行的时间复杂度是多少?
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 条件简单地使得有...
- i=1:
n
操作 - i=2:
(n-1)
操作 - ...
- i=n:
1
操作
所以,你所做的所有操作的总和是 1 + 2 + ... n
= n(n+1)/2
即 O(n^2)
.