嵌套系列for循环的大O.

时间:2010-11-28 00:55:07

标签: java big-o performance

我有一个关于计算一系列循环的Big O运行时间的问题,这些循环嵌套在外部for循环中。

例如:


for (50,000 times)
{
    for (n times)
    {
        //Do something
    }
    for (n-2 times)
    {
        //Do something
    }
    for (n times)
    {
        //Do something
    }
    for (n-2 times)
    {
        //Do something
    }
}

外部循环是一个常量,所以我认为这是被忽略的。那么就像进行以下计算一样容易吗?

N + N-2 + N + N-2

2N + 2(N-2)

4N - 4

O(4N - 4)

O(4N) - 去除-4常数后

这是对的吗?

感谢。

3 个答案:

答案 0 :(得分:6)

这是O(n)

(你只对等式的“最大”部分感兴趣,然后去掉常数)。

如果你有来自1..n的循环 i 和来自i..n的 j 中的另一个循环,它将是O(n ^ 2)。< / p>

答案 1 :(得分:0)

这是对的。您只需添加四个O(N)循环。因此它是4O(N),然后乘以50, 000这是一个很大的数字,但不是N依赖的。

答案 2 :(得分:0)

这是O(N)。但在这种情况下,根据您对N的所有内容,常量可能会对算法的性能产生很大影响。