所以我想为这段代码计算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++)
{
...
}
`
答案 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很大时。