对于没有嵌套的循环,Big O符号对于两个符号是什么?
示例:
for(int i=0; i<n; i++){
System.out.println(i);
}
for(int j=0; j<n; j++){
System.out.println(j);
}
答案 0 :(得分:16)
线性
O(n) + O(n) = 2*O(n) = O(n)
你有多少非嵌套循环(如果这个数字是常数而不依赖于n
)并不重要,复杂性将是线性的,并且将等于循环中的最大迭代次数
答案 1 :(得分:6)
从技术上讲,此算法仍在O(n)时间内运行。
虽然n
每增加一次迭代次数增加2,但所用时间仍以线性速率增加,因此,在O(n)时间内。
答案 2 :(得分:4)
它将是O(n)
+ O(n)
==&gt;有效O(n)
因为我们没有保持不变的值。
答案 3 :(得分:2)
它将是O(2n),因为你运行n + n = 2n次迭代。
O(2n)基本上等于O(n),因为2是常数。
答案 4 :(得分:0)
假设一个场景,每个循环最多运行n
所以我们可以说每个for循环的复杂度为O(n),因为每个循环将运行n次。
因此,您为第一个循环O(n)+第二个循环O(n)+第三个循环O(n)指定了这些循环不在线性方案中嵌套,这将为您提供3O(n)。 现在,由于我们主要专注于复杂性的可变部分,因此我们将排除恒定部分,并说在这种情况下为O(n)。 但是在实际情况下,我建议您牢记恒定也将发挥至关重要的作用,因此切勿将其排除在外。 例如,考虑时间复杂度以从整数数组中找到最小整数,任何人都会说它是O(n),但是要找到同一数组的第二大或最小整数将是O(2n)。但大多数答案将是实际上忽略常数的是O(n)。考虑一下数组的大小是否为1千万,那么不能忽略该常数。