java - 用于嵌套一系列 for 循环的大 O

标签 java big-o performance

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

例如:


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 之后

这是正确的吗?

谢谢。

最佳答案

这是 O(n)

(您只对等式中“最大”的部分感兴趣,并且去除常数)。

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

关于java - 用于嵌套一系列 for 循环的大 O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294758/

相关文章:

c++ - google::dense_hash_map 与 boost::unordered_map 性能问题

java - IllegalArgumentException JSON

java - 如何修复线程 "main"java.lang.NoSuchMethodError : org. apache.poi.POIXMLDocumentPart.getPackageRelationship 中的此异常

Java 8 stream 的 toArray 和 size 参数

java - 通过迭代和打印插入 2 个哈希表的运行时间

algorithm - 了解 O(max(m,n)) 的时间复杂度

c++ - x64 性能与 x86 相比

java - java中的按钮不执行操作

java - 试图证明二分查找的复杂度是O(log(n))

c++ - OpenMP shared vs. firstprivate performancewise