n log n是O(n)?

Wae*_*ada 21 algorithm recurrence

我试图解决这种情况

T(n)= 3 T(n/2)+ n lg n ..

我已经得出它属于主要定理案例2的解决方案,因为n lg n是O(n ^ 2)

但在参考解决方案手册后,我注意到他们有这个解决方案

在此输入图像描述

解决方案说,对于0到0.58之间的e,n lg n = O(n ^(lg 3 - e))

所以这意味着n lg n是O(n)..这是对的吗?我错过了什么吗?

不是nlgn O(n ^ 2)?

Sre*_*nat 80

这将更好地解释事情 在此输入图像描述

  • 谢谢你的努力..所以我猜n lg n> O(n)..这本书错了? (3认同)
  • 你从这里拿走那张图表了吗?http://bigocheatsheet.com你应该归功于你的来源! (3认同)

Mys*_*ial 14

n*log(n)不是O(n^2).它被称为准线性,它的生长速度比O(n^2).实际上n*log(n)不如多项式.

换一种说法:

O(n*log(n)) < O(n^k)
Run Code Online (Sandbox Code Playgroud)

哪里 k > 1

在你的例子中:

3*T(2n) -> O(n^1.585)
Run Code Online (Sandbox Code Playgroud)

由于O(n^1.585)是多项式并占主导地位O(n*log(n)),后一项下降所以最终的复杂性就是O(n^1.585).


小智 6

n lg3不是O(n).它超过了O(n)......实际上,n上任何大于1的指数都会导致渐近时间比O(n)更长.由于lg(3)约为1.58,只要从指数中减去小于.58,它就渐近地大于O(n).