Java嵌套循环的大O表示法

时间:2015-09-07 22:51:45

标签: java algorithm for-loop big-o nested-loops

我知道Big O的各种速率,例如O(n ^ 2)和O(n),并且确定简单嵌套for循环的Big O值没有问题,如下所示。

for (int i = 0; i < n; i++)
    for(int j = 0; j < n; j++)
   //Simple Statement

以下循环显然是O(n ^ 2),但是当内部嵌套循环依赖于外部循环时,如何解决Big O.  实施例

for ( int i = 0; i < n; i++)
    for (int j = n - 1; j >= i; j--)
    //Simple Statement

T(n)只是n *(n-1-i)?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

它仍然是n ^ 2的数量级。你只关心最重要的术语。第二个表达式看起来像O(n ^ 2 - an),其中a是某种系数。你真正关心的是n ^ 2。

答案 1 :(得分:2)

内环运行n +(n-1)+(n-2)+ ... + 2 + 1次。这是一个高斯和,等于n *(n + 1)/ 2,或(n ^ 2 + n)/ 2,因此O(n ^ 2)。