我有一个关于计算一系列循环的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常数后
这是对的吗?
感谢。
答案 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的所有内容,常量可能会对算法的性能产生很大影响。