大O和嵌套循环

时间:2014-01-27 04:15:26

标签: big-o

void function(int N){
  for (int i=0; i<N; i++)
    for (int j= 0; j< i; j++)
      System.out.println("j")
}

对于这个函数,Big O如何依赖于第二个for循环,因为它是j

此外,如果j <我被改为j&lt; N * N,那么大的O会不会是O(N ^ 3)?

2 个答案:

答案 0 :(得分:5)

一个从i = 1循环到n然后有一个从1到i的内部循环的函数会经过一个等于这个公式的迭代次数:

n(n+1)/2

正如你所看到的,当我们除去主要指数之外的所有东西时,你以O(n ^ 2)结束

如果你从1循环到n然后有一个从1到n ^ 2的内部循环,那么是。您处于O(n ^ 3)因为您经历的迭代次数将等于:

n^3

大O符号中所关心的是多项式中最大的元素,它描述了代码将经历的迭代次数。原因是因为随着n变大,除了最大元素之外的所有内容都很快无关紧要。当n很大时,我们只关心时间要求。因此,导致n ^ 3 + 5n ^ 2 + 2n迭代的算法将具有O(n ^ 3)的大O符号。

答案 1 :(得分:4)

您可以正式且直接地确定增长顺序,如下所示:

enter image description here