确定/计算Big O表示法

时间:2018-01-29 23:14:26

标签: time-complexity big-o

所以,我知道Big O本质上是一个函数/算法的时间复杂性,但是我的教科书在这个问题上是如此简短,很难解决这样看似简单的问题。

  

确定函数f(n) = 1000n + 0.1n^2 + n ln ⁡x

的大O表示法

我的尝试/猜测是O(n^2(n Ln x)),但x不会被视为常数,因此省略了吗? 解决此类问题的最佳方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:2)

我认为正确的答案是O(n^2)

看,你有一个总和f(n) = a(n) + b(n) + c(n),唯一重要的是“最大”(增长最快)的总和。让我们比较一下:

  • 1000nn
  • 中是线性的 {li> 0.1n^2n 中是 cubic 二次方
  • n ln(x)n中是线性的(无论x是什么,f不依赖于它,因此ln(x)与{{1}一样不变}或任何其他固定数量)

最大的是什么?右 - 立方二次项42,因此答案是:“n^2位于f(n)”。