时间复杂度O(n^2)
或O (n(logn)^2)
更好吗?
我知道当我们简化它时,就会变成
O(n) vs O((logn)^2)
和logn
< n
,但是logn^2
呢?
答案 0 :(得分:15)
n 仅小于( log n) 2 强>小于0.49 ......
所以一般( log n) 2 对于大 n ...
但是,由于这些 O (某事物) - 注释总是省略不变因素,在您的情况下,可能无法确定哪种算法更好。
这是一张图表:
(蓝线 n ,绿线( log n) 2 )
请注意, n 小值的差异不是那么大,而且可能很容易因Big-O表示法中未包含的常数因素而相形见绌。
但是对于较大的 n ,( log n) 2 会获胜:
答案 1 :(得分:11)
对于每个常量k
渐近log(n)^k < n
。
证明很简单,请记录等式的两边,然后得到:
log(log(n))*k < log(n)
很容易看出渐近,这是正确的。
语义注释:假设此处log(n)^k == log(n) * log(n) * ... * log(n) (k times)
而非log(log(log(...log(n)))..) (k times)
,因为它有时也会被使用。
答案 2 :(得分:3)
O(n^2) vs. O(n*log(n)^2)
<=> O(n) vs. O(log(n)^2) (divide by n)
<=> O(sqrt(n)) vs. O(log(n)) (square root)
<=> polynomial vs. logarithmic
对数胜利。
答案 3 :(得分:0)
(logn)^2
也是&lt; n
。
举个例子:
n = 5
log n = 0.6989....
(log n)^ 2 = 0.4885..
你可以看到,(长n)^ 2进一步减少。
即使您采用更大的n值,例如100,000,000,然后
log n = 9
(log n)^ 2 = 81
远小于n
。
答案 4 :(得分:0)
(Log n)^ 2更好,因为如果你用exp m做变量n,那么m ^ 2优于exp m
答案 5 :(得分:-1)
O(n(logn)^ 2)对于大n!
更好(更快)从双方获取日志:
的log(n ^ 2)= 2log(n)的
日志(N(logn)时间^ 2)=的log(n)+ 2log(日志(N))=的log(n)+ 2log(日志(n))的
lim n - &gt;无穷大[(Log(n)+ 2log(Log(n)))/ 2log(n)/] = 0.5(使用l'Hôpital规则)(http://en.wikipedia.org/wiki/L'H%C3 %B4pital's_rule)]