当两个函数 f(n) [O(1)] 和 g(n) [O(n)] 相乘时的大 O 复杂度

Big O complexity when two functions f(n) [O(1)] and g(n) [O(n)] are multiplied together

f(n)和g(n)代表两种不同算法的运行时间。 f(n)的算法复杂度为O(1),g(n)的算法复杂度为O(n)。我们可以声称 f(n)*g(n) 的复杂度为 O(n) 吗? Why/Why 不是吗?

O(n) 是时间复杂度。当我们将 f(n) 和 g(n) 相乘时。更高的时间复杂度获得如此,算法复杂度为 O(n)。

数学证明:

如果我们想证明 f(n)*g(n) 是 O(n) 我们必须证明存在 n0 和常量 c 例如:

f(n)*g(n) < c*n for every n>n0

我们有事实 f(n) 是 O(n) 这意味着有 c1,n1 :

f(n)<c1*n for every n>n1  (1)

对于 g 有 c2,n2:

g(n)<c2 for every n>n2    (2)

现在我们有了,对于每个 n>max(n1,n2)(最大因为我们希望 f 和 g 的不等式都成立):

f(n)g(n)<c1*c2*n (by multiplying (1),(2))

所以我们证明了 c=c1*c2 and n0=max(n1,n2) 如下不等式成立:

f(n)g(n)<c*n -> f(n)*g(n) is O(n) for every n>n0.