如果算法A具有复杂度O(n)并且算法B具有复杂度o(n ^ 2),那么我们可以说A和B之间的关系是什么?注意:A的复杂度用big-Oh表示,B的复杂度用little-Oh表示。
答案 0 :(得分:4)
正如wikipedia明确表达的那样,
“f(x)是g(x)的小o”......意思是 g(x)比增长更多 F(X)
(我的省略号和重点) - 将它置于“数学家想要”似乎需要的阴沉方式中,当{趋于无穷大时,f(x)/g(x)
的极限在极限处倾向于0。
所以,我们所说的并不是很多:A
增长速度不会超过n
,B
增长多慢于n
平方,它甚至可能是你正在讨论的相同算法;-) - 就像你在口头上表达相同的约束一样(“A不比线性更糟糕,B比二次更好” “)。
事实上,任何O(n)
都将o(n squared)
,但反之亦然;例如,对于任何x
,K
对某个常量K
的幂O(n)
将为K <= 1
,但o(n squared)
为K < 2
对于任何o(n squared)
。 O(N)
但不是n log n
的其他功能包括常见的{{1}}。