我应该如何根据大O来确定这些代码片段的复杂性的上限?我正在学习这些概念并正在寻找:线索,直接反应,更多学习更多资源。
我发现了另一个thread,但我仍然无法适应答案。
我给出了这些例子:
For J = 1 to 10000000000000
C[J] = A[J] + B[J]
For J = 1 to N
C[J] = A[J] * B[J]
For J = 1 to N
For K = 1 to N
C[J][K] = A[J] * B[K]
For I = 1 to N
For J = 1 to 10000000000000
For K = 1 to N
C[I][J] = A[J][K] * B[K][I]
答案 0 :(得分:2)
Big O表示输入大小与时间/空间复杂度之间的关系。
现在进入你的例子:
For J = 1 to 10000000000000
- 10000000000000
只是一个常数。即使它是一个很大的数字,它也不依赖于输入大小(N),这就是为什么这是O(1)For J = 1 to N
- 迭代次数现在直接取决于N
,这被称为线性复杂度,因为如果将N
增加1,循环将再次运行N
,复杂性为O(N * N)
最后一个很容易理解上述情况。