-
大O记号(O):
-
定义:如果存在正常数 CCC 和 n0n_0n0,使得所有 n≥n0n \geq n_0n≥n0 时,f(n)≤C⋅g(n)f(n) \leq C \cdot g(n)f(n)≤C⋅g(n),则我们说 f(n)f(n)f(n) 是 O(g(n))O(g(n))O(g(n))。
-
含义:大O记号用于描述算法性能的上界,即算法的运行时间或所需空间不会超过 g(n)g(n)g(n) 的某个常数倍。它是一种保证,表明算法在最坏情况下的表现。
-
举例:如果一个算法的时间复杂度为 O(n2)O(n^2)O(n2),则意味着输入规模为 nnn 时,执行时间不会超过 n2n^2n2 的某个常数倍。
-
-
小o记号(o):
-
定义:如果对于任意的正常数 CCC,存在正常数 n0n_0n0,使得所有 n≥n0n \geq n_0n≥n0 时,f(n)<C⋅g(n)f(n) < C \cdot g(n)f(n)<C⋅g(n),则我们说 f(n)f(n)f(n) 是 o(g(n))o(g(n))o(g(n))
-
含义:小o记号用于描述一个更严格的上界,即 f(n)f(n)f(n) 的增长率严格小于 g(n)g(n)g(n)。这意味着 f(n)f(n)f(n) 在 nnn 趋向无穷大时与 g(n)g(n)g(n) 相比,增长得更慢,几乎可以忽略不计。
-
举例:如果一个算法的时间复杂度为 o(n2)o(n^2)o(n2),则表示该算法的执行时间随 nnn 增大,其增长率低于 n2n^2n2 的任何常数倍,随 nnn 趋向无穷大,比 n2n^2n2 增长得慢得多。
-