在学习 geektime 的<数据结构与算法之美>,在解释大 O 的时候有如下的例子:
i=1;
while (i <= n) {
i = i * 3;
}
对数之间是可以互相转换的,log3n 就等于 log32 * log2n,所以 O(log3n) = O(C * log2n),其中 C=log32 是一个常量。基于我们前面的一个理论:在采用大 O 标记复杂度的时候,可以忽略系数,即 O(Cf(n)) = O(f(n))。所以,O(log2n) 就等于 O(log3n)。因此,在对数阶时间复杂度的表示方法里,我们忽略对数的“底”,统一表示为 O(logn)。
疑问是 log3n = log32 * log2n 转换过程是怎么样的。
1
xml123 2018-11-28 12:42:36 +08:00 1
对数的换底公式
|
2
lance6716 2018-11-28 15:30:27 +08:00
如果你的书也是写的“ log32 ”而不是 3 比 2 小且底那么一点点的话,书就可以扔了
|
5
BlackYau 2020-02-21 13:15:26 +08:00
@zjiajun
之前自己不懂的时候搜到了这个问题,现在解决了 https://blackyau.cc/24.html#ologn-onlogn https://i.loli.net/2020/02/21/3g5sRDiflBy7rvN.jpg |