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)?
答案 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)
您可以正式且直接地确定增长顺序,如下所示: