用大O确定上界

时间:2014-11-20 02:57:59

标签: performance algorithm optimization big-o complexity-theory

我应该如何根据大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]

1 个答案:

答案 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)

最后一个很容易理解上述情况。