两个非嵌套循环的Big O表示法

时间:2015-12-23 05:09:25

标签: algorithm loops big-o time-complexity

对于没有嵌套的循环,Big O符号对于两个符号是什么?

示例:

for(int i=0; i<n; i++){
   System.out.println(i);
}

for(int j=0; j<n; j++){
   System.out.println(j);
}

5 个答案:

答案 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千万,那么不能忽略该常数。