你能说(n lg n)是O(n ^ 2)吗?

时间:2016-09-20 12:50:07

标签: algorithm sorting big-o

我知道,O(n lg n)O(n^2)(n lg n)n足够高时会更小。

但是O(n^2)会对(n lg n)进行正确评估吗?

O(n lg n)O(n^2)存在很大差异,因此我不确定O(n^2)(n lg n)的最佳答案"最坏的情况"

2 个答案:

答案 0 :(得分:6)

回答标题问题(原来是:你能说nlgn等于O(n ^ 2)吗?):

不,您不能nlgn功能O(n^2)设置

从正文回答你的问题:

嗯,是的,nlognO(n^2) ...但请勿尝试使用O(n^n)回答考试中的每个问题。这不是他们所要求的。 Big-O表示法不用于给出最佳答案。这只是提供一些信息的一种方式。

根据维基百科

  

Big O表示法是一种数学符号,用于描述当参数趋向于特定值或无穷大时函数的限制行为。它是Paul Bachmann,Edmund Landau和其他人发明的一系列符号的成员,统称为Bachmann-Landau符号或渐近符号。

答案 1 :(得分:1)

xentros的答案很好。回答你的问题的另一种方法是,当要求Big-Oh渐近线时,通常要求你给出一个尽可能紧的上限。

所以n lg n = O(n ^ 2)(=符号是滥用符号,但是常见的滥用);但是说n lg n = O(n lg n)也是正确的,从某种意义上来说,它是一个更具限制性的上界。

同样,当您找到下限时,首选项是您可以找到的下限。真正快乐的情况是,你可以找到足够低的上限,并且下限足够高,找到一个Theta界限。