我将仅引用Knuth 的 TAOCP 第 1 卷- 第 110 页(我有印度版)。我建议阅读第 107-110 页(第 1.2.11 节渐近表示)
人们经常通过假设 O 表示法给出了确切的增长顺序来混淆 O 表示法。他们使用它,就好像它指定了一个下限和一个上限一样。例如,一个算法可能被称为低效率,因为它的运行时间是 O(n^2)。但是运行时间为 O(n^2) 并不一定意味着运行时间也不是 O(n)
在第 107 页,
1^2 + 2^2 + 3^2 + ... + n^2 = O(n^4) 和
1^2 + 2^2 + 3^2 + ... + n^2 = O(n^3) 和
1^2 + 2^2 + 3^2 + ... + n^2 = (1/3) n^3 + O(n^2)
Big-Oh 用于近似值。它允许您将 ~ 替换为等号 = 符号。在上面的例子中,对于非常大的 n,我们可以确定数量将保持在 n^4 和 n^3 和 (1/3)n^3 + n^2 [而不仅仅是 n^2] 以下
Big Omega 用于下界 - 对于大 N,使用 Omega(n^2) 的算法不会像使用 O(N logN) 的算法那样有效。但是,我们不知道 N 的值是多少(从这个意义上说,我们知道大约)
Big Theta 用于精确的增长顺序,包括下限和上限。