大O和小o

时间:2010-05-08 04:45:24

标签: big-o

如果算法A具有复杂度O(n)并且算法B具有复杂度o(n ^ 2),那么我们可以说A和B之间的关系是什么?注意:A的复杂度用big-Oh表示,B的复杂度用little-Oh表示。

1 个答案:

答案 0 :(得分:4)

正如wikipedia明确表达的那样,

  

“f(x)是g(x)的小o”......意思是   g(x)比增长更多   F(X)

(我的省略号和重点) - 将它置于“数学家想要”似乎需要的阴沉方式中,当{趋于无穷大时,f(x)/g(x)的极限在极限处倾向于0。

所以,我们所说的并不是很多:A增长速度不会超过nB增长慢于n平方,它甚至可能是你正在讨论的相同算法;-) - 就像你在口头上表达相同的约束一样(“A不比线性更糟糕,B比二次更好” “)。

事实上,任何O(n) 都将o(n squared),但反之亦然;例如,对于任何xK对某个常量K的幂O(n)将为K <= 1,但o(n squared)K < 2对于任何o(n squared)O(N)但不是n log n的其他功能包括常见的{{1}}。