(n * log_2 n) + (n^1.01 * (log_2 n)^10)
并且它比O(n^1.03)
好吗?如果是,请解释,如何知道最坏情况下的平均情况?
答案 0 :(得分:2)
理论上,是的。对于任何O(n^p)
和O(n*log n)
,O((log n)^k)
大于p > 1
和k > 0
。
第一个:n^p > (n * log n) <=> n^(p-1) > log n
第二个:n^p > (log n)^k <=> n^(p/k) > log n
这两个不等式都适用于足够大的n
。
另请注意,对数的基数是无关紧要的,因为不同基数的对数仅因常数因子而不同,因为log_b(x) = log_e(x)/log_e(b)
。
另一方面,关于平均情况,你唯一可以说的是,仅基于最坏情况,它并不比最坏情况更糟糕。
一个实用的评论:要使n^1.03
变为n^1.01
的两倍,您需要(n^1.03)/(n^1.01) = 2 <=> n^0.02 = 2 <=> n = 2^50
。那太棒了!