所以我得到第一个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");
}
}
答案 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)