当文章/问题表明算法的Big O运行时间为O(LogN)时。
例如Quicksort的运行时间为O(LogN),其中它是Log base 10但二叉树的高度为O(LogN + 1),它是Log base 2
问题
1)我很困惑它是Log base 10还是Log base 2,因为不同的文章使用不同的对数作为对数。
2)如果它的Log base 2或Log base 10 ??
会有所不同吗?3)当我们看到O(LogN)???
时,我们可以假设它意味着Log base 10答案 0 :(得分:37)
我认为日志的基础无关紧要,因为无论使用何种基础,相对复杂性都是相同的。
所以你可以把它想象为O(log 2 X)= O(log 10 X)
另外要提到的是,对数与某些常数相关。
所以
所以大多数时候我们通常忽略复杂性分析中的常数,因此我们说基数并不重要。
此外,您可能会发现大多数时候基座被认为是Merge Sort。树的高度为log₂ n
,因为节点有两个分支。
1)我对它是Log base 10还是Log base 2感到困惑 不同的文章使用不同的对数作为对数。
因此,如上所述,这种基础的变化并不重要。
2)如果它的Log base 2或Log base 10 ??
会有所不同吗?
不,没关系。
3)当我们看到O(LogN)???
时,我们可以假设它意味着Log base 10
是的,如果你知道基本转换规则,你可以假设。
答案 1 :(得分:14)
log 10( x )= log 2( x )/ log 2(10)。 1 / log 2(10)是一个常数乘数,可以从渐近分析中省略。
更一般地说,任何对数的基数都可以从 a 更改为 b (均为常数wrt。 n )除以logₐ ( b ),因此你可以在大于1的日志基数之间自由切换:O(log 10( n ))与O(log 2( n <)相同/ em>)),O(ln( n ))等。
这样做的一个例子是B-trees渐近地没有击败平衡二叉搜索树,即使它们在分析中给出了更高的对数基数。只是有更好的常数。
答案 2 :(得分:7)
在Big O表示法中,O(log(n))
对于所有基础都是相同的。这是由于对数基数转换:
log2(n) = log10(n)/log10(2)
1/log10(2)
只是一个常数乘数,因此O(log2(n))
与O(log10(n))
相同