Buc*_*pus 87 math complexity-theory big-o binary-tree
对于二进制搜索树类型的数据结构,我看到Big O表示法通常标记为O(logn).在日志中使用小写的"l",这是否意味着日志基数e(n)如自然对数所描述的那样?抱歉这个简单的问题,但我总是无法区分不同的隐含对数.
Cad*_*oux 71
大O表示法不受对数基数的影响,因为不同基数中的所有对数都是由常数因子相关的,O(ln n)相当于O(log n).
Hea*_*utt 69
一旦用big-O()表示法表示,两者都是正确的.但是,在推导 O()多项式期间,在二分搜索的情况下,只有log 2是正确的.我认为这种区别是你问题的直觉灵感.
另外,作为我的观点,编写O(log 2 N)对于您的示例更好,因为它更好地传达了算法运行时的推导.
在big-O()表示法中,常数因子被删除.从一个对数基数转换为另一个对数基数涉及乘以常数因子.
因此,由于常数因子,O(log N)等于O(log 2 N).
但是,如果您可以在答案中轻松排版log 2 N,那么这样做更具教学意义.在二叉树搜索的情况下,在big-O()运行时的派生期间引入log 2 N是正确的.
在将结果表示为big-O()表示法之前,差异非常重要.当通过big-O表示法导出要传递的多项式时,在应用O() - 表示法之前,使用除log 2 N 之外的对数是不正确的.一旦使用多项式通过big-O()表示法传达最坏情况的运行时,使用什么对数并不重要.
两者都是正确的。想想这个
log2(n)=log(n)/log(2)=O(log(n))
log10(n)=log(n)/log(10)=O(log(n))
logE(n)=log(n)/log(E)=O(log(n))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33746 次 |
| 最近记录: |