[英]n log n is O(n)?
我試圖解決這種情況
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)?
這將更好地解釋事情
n*log(n)
不是O(n^2)
。 它被稱為准線性,它比O(n^2)
生長得慢得多。 實際上n*log(n)
小於多項式。
換一種說法:
O(n*log(n)) < O(n^k)
其中k > 1
在你的例子中:
3*T(2n) -> O(n^1.585)
由於O(n^1.585)
是多項式並且支配O(n*log(n))
,后一項下降所以最終復雜度僅為O(n^1.585)
。
n lg3不是O(n)。 它超過了O(n)......實際上,n上任何大於1的指數都會導致漸近時間比O(n)更長。 由於lg(3)約為1.58,只要從指數中減去小於.58,它就漸近地大於O(n)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.