如何计算嵌套for循环中的时间复杂度?

时间:2017-05-22 09:27:32

标签: java algorithm performance time-complexity

以下代码段的时间复杂度是多少?你能解释一下吗?

for(int i=0;i<n;i++){
  for(int j=0;j<=i;j++){
    //print something
  }
}

5 个答案:

答案 0 :(得分:4)

外部循环有n次迭代。

对于外循环的每次迭代,内循环都有i+1次迭代。

因此内循环的迭代总数为:

1 + 2 + 3 + ... + n

等于

n*(n+1)
-------
   2

这是O(n^2)

答案 1 :(得分:3)

每当您面临计算时间复杂度的问题时,只需查看您要完成工作的次数。

在这里,在你的问题中,无论你正在做什么工作,让我们说打印一些东西,你打算做外循环的次数,外循环本身运行n长度。 因此,你将完成1 + 2 + 3 + .... n次的工作 变成了      N *(N + 1)/ 2 次。

因此,它只是O(n ^ 2)

答案 2 :(得分:2)

  1. 对于i = 0,内循环运行1次
  2. 对于i = 1,内循环运行2次
  3. 对于i = 2,内循环运行3次 ...
  4. N-1。对于i = n-1,内循环运行n次

    所以,总时间= 1 + 2 + 3 + .... + n

      

    N *(N + 1)/ 2

    并表示为O(n ^ 2)

答案 3 :(得分:1)

时间复杂度是n平方的大O,即O(n^2)

  1. 对于外部活套,它是n

  2. 内圈成本为1 + 2 + 3,...n-2, n-1, n

  3. 总费用为O(n^2)

答案 4 :(得分:1)

二次函数(二次运行时间)

如果enter image description here

,则称算法为二次方

出现二次函数的主要原因是嵌套循环,其中内循环执行线性运算数n,外循环也执行线性运算数n,因此,在这种情况下,整个算法执行enter image description here次操作。

n是任何给定数组中的元素数。

如果数组中的元素数是10,这意味着完成逻辑执行需要10 * 10 = 100次操作。

一个很好的例子是检查列表中出现的单个项目的数量,这需要将列表中的每个元素与列表中的所有元素(包括其自身)进行比较。

二次函数图:

enter image description here

我有一个旧的 BigO 符号说明,涵盖7个最着名的运行时复杂性,看看这是否有用BigO