计算大O.

时间:2013-04-10 16:07:35

标签: big-o

所以我想为这段代码计算Big O,但我不确定如何处理它。一些帮助入门将不胜感激。

`

            for ( i = 1 ; i * i < n ; i++){
                for ( j = 1 ; j < n ; j++)
                {
                  ...
                }
            }
            for ( i = 1 ; i < n ; i++){
                for ( j = i % 5 ; i + j < 2000; j++)
                {
                  ...
                }

`

2 个答案:

答案 0 :(得分:2)

好的,我们从第一个内循环开始,看到它是O(n)。然后,i从1变为平方根n,因此该循环的复杂度为O(sqrt(n))。然后我们将它们相乘以找到第一个嵌套循环的复杂性,即O(n * sqrt(n))

第二个外环具有复杂度n,内部循环运行定义次数(不依赖于n),因此总复杂度为O(n * sqrt(n) + n)

答案 1 :(得分:0)

Big O是最糟糕的情况,在这种情况下是N ^ 2,因为你在第一个for循环中有一个嵌套的for循环。

第二组for循环只是N的大O,因为内部for循环最多运行2000次,并且在范围内非常小,尤其是当N很大时。