大O计算困惑

时间:2014-03-03 15:20:21

标签: big-o

我的考试有这个问题,我无法弄清楚: 计算以下的大O:

1)

 for i = 0 to n     // n - 0 + 2 = (n+2)
  for j = 0 to m    // m - 0 + 2 = (m+2)
   x = x + 1

答案变为(n + 2)(m + 2),O(nm)为bigO?

3 个答案:

答案 0 :(得分:1)

是O(nm)

我不认为你的初始数学是正确的

因为你有(n+1)(m+1)但是在展开之后你会得到类似m*n+m+n+1的内容 由于m * n是此处的最高顺序,因此您将获得O(m*n)

答案 1 :(得分:1)

  

答案变为(n + 2)(m + 2),O(nm)为bigO?

为什么 n + 2 ?如果 0到n 包含 n ,它将是 n + 1 ,如果,它将 n > n 是独家的。因此,运行时间(n + 1)(m + 1)(nm)

然而, O(nm)将适用于所有情况。

答案 2 :(得分:0)

你有2个循环。所以你有O(外*内)。外循环执行大约n次。内循环执行m次。

所以O(nm)是合适的。