我的考试有这个问题,我无法弄清楚: 计算以下的大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?
答案 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)是合适的。