如果我有像 c1+c2+c3 这样的恒定时间复杂度,那么我知道这将需要线性时间。我想用大O符号来表达它。如果时间复杂度为 f(n(= 2n+3,那么我们写 O(n( 然后证明 f(n( <cg(n(,但对于恒定时间,我们将如何做到这一点?>
如果您知道算法的时间复杂度是一些常量(如 c1 + c2 + c3(的组合,那么您可以定义一个函数 f(x( = c1 + c2 + c3 = c。然后,使用大O的定义,即
f(x( = O(g(x(( 当 x 变为无穷大时
当且仅当存在一个正实数 M 和一个实数 x0 使得
|f(x(| <= Mg(x( 对于所有 x>= x0
我们可以说 f(x( = c 是 O(1(,g(x( = 1。原因是我们可以通过选择 M 作为常数 c 来满足上述定义的要求,而 x0 在这里无关紧要,因为时间复杂度不依赖于 x 的值。
常量时间复杂度为 O(1(。