大O符号的总和

时间:2012-10-18 03:25:02

标签: algorithm big-o

  

可能重复:
  Big O when adding together different routines

O(n) + O(log(n))减少到什么?我的猜测是O(n),但不能给出严格的推理。

我理解O(n) + O(1)应缩减为O(n),因为O(1)只是一个常数。

3 个答案:

答案 0 :(得分:10)

O( f(n) ) + O( g(n) ) = O ( f(n) + g(n) )以来我们只是在尝试计算f(n) f(n) > n + log(n)

由于n增长log(n) < n,我们可以说f(n) > 2n > n + log(n)

因此O(f(n)) = O(2n) = O(n)

从更一般的意义上说,O( f(n) ) + O( g(n) ) = O( f(n) )如果c*f(n)>g(n)为某个常数c。为什么?因为在这种情况下f(n)将“支配”我们的算法并决定其时间复杂度。

答案 1 :(得分:3)

订单总是减少到更高的订单条款。我可以给你直观的推理。假设你有O(n + n^2)。那么哪个部分会在运行时发挥更重要的作用? n或n ^ 2。显然n ^ 2。因为当n增加或减少时,你会发现n ^ 2的效果。

例如,

let n = 100, then n^2 = 10000
means n is 0.99% and n^2 is 99.01% of total running time.
What would you consider for runtime?
if n is increased then this difference is clearer.

我想你现在明白了,

答案 2 :(得分:1)

答案是O(n)。 O(log n)小于O(n)。 所以他们的加法总和为O(n)的最大值。