与大O符号混淆

时间:2014-09-28 00:17:45

标签: c performance algorithm big-o

所以我得到第一个for循环运行O(n)次,然后在内部运行3次,然后再运行3次。我怎么用大O表示法表达这个呢?那么2个打印报表是否重要?如何将它们添加到我的big-o表达式中?谢谢,真的很困惑,感谢任何帮助。

    for (int x = 0; x < n; x++) {
            for (int j = 0; j < 3; j++) {
                for (int k = 0; k < 3; k++) {
                    printf("%d", arr[x]);
                   }
                printf("\n");
            }
    }

3 个答案:

答案 0 :(得分:2)

O(n)是线性时间,因此任何k * O(n) k是常量(如示例中所示)也是线性时间,只表示为O(n)。您的示例时间复杂度为O(n)

答案 1 :(得分:1)

两个内环是常数,所以它仍然是O(n)。常数因素并不重要,运行时间仅随输入大小而变化。

答案 2 :(得分:1)

Big O表示法总是定义为输入大小的函数 - n。 Big O给出了运行该模块所用总时间的上限。因为你的内心&#34; for&#34;无论n的输入大小如何,循环始终运行3 * 3 = 9次 - 在Big O计算中仍然被认为是恒定时间

Time Complexity = O(n+9+constantTimeToPrint) = O(n)