哪个更大:O(n * logn)还是O(1)?

时间:2013-02-19 01:47:37

标签: big-o

我们正在算法类中讨论主定理,对于一个问题,我试图比较nlogn与1来确定它属于MT的哪种情况。但我正在努力弄清楚哪个更大。

编辑:这是为了解决重现问题。等式是T(n)= 2T(n / 4)+ N * LogN。只是把它扔了,这有助于它。

2 个答案:

答案 0 :(得分:1)

以这种方式思考:

  • O(N*LogN)会随着N而增加,对于任何X,无论多大,您都可以找到N的值{{1} }}大于N*LogN
  • X将保持不变,无论O(1)是什么。

这意味着N 渐近更好,即对O(1)的某些(可能非常高)值N将会变慢。

答案 1 :(得分:0)

如果算法是O(NlogN),这意味着存在数字A和执行时间B的数量,这样对于任何大于A的输入大小N,执行时间将小于B次NlogN。< / p>

如果算法是O(1),那就意味着存在一些固定的时间C,无论输入大小如何,都可以保证算法完成。

在比较两个算法中,其中一个是O(NlgN),其中一个是O(1),人们通常会发现O(1)算法对于足够大的N值更快,但是在很多情况下,对于N的小值,O(NlgN)算法可能更快。

实际上,虽然像O(N ^ 3)或O(N ^ 4)算法这样的东西通常看起来很糟糕,但即使O(N ^ 4)算法也可能胜过O(1)算法,如果N通常是一个很小的数字(例如1-5左右)并且永远不会变得非常大(即使偶尔的值50也可能会严重影响狗的表现)。