Performance O(logn)澄清
关于Performance O(logn)澄清,performance,time-complexity,big-o,Performance,Time Complexity,Big O,关于O(logn)以及它的实际含义,有很多问题,不要试图再次打开它 然而,在这个特定的答案上,这个图像对我来说毫无意义: 话虽如此,鉴于该答案获得了超过100票的支持票,并且已经支持了2年多,并且没有任何评论表明可能存在任何错误,我认为我误解了什么,因此要求在这里澄清(由于声誉低下,我无法发表评论) 主要是,我不明白为什么O(log(n))在n==1024时是10。这不应该是32,因为32^2=1024 显然,这对O(n*log(n))也有影响,但只需要理解为什么O(log(1024))=10
O(logn)
以及它的实际含义,有很多问题,不要试图再次打开它
然而,在这个特定的答案上,这个图像对我来说毫无意义:
话虽如此,鉴于该答案获得了超过100票的支持票,并且已经支持了2年多,并且没有任何评论表明可能存在任何错误,我认为我误解了什么,因此要求在这里澄清(由于声誉低下,我无法发表评论)
主要是,我不明白为什么O(log(n))
在n==1024
时是10
。这不应该是32
,因为32^2=1024
显然,这对
O(n*log(n))
也有影响,但只需要理解为什么O(log(1024))=10
表格是正确的,只是标题可能会误导,因为它们下面的值对应于大O内部的表达式,而不是大O本身。但这是可以理解的,因为O符号具有忽略乘法常数的含义
类似的情况发生在log(n)
上。log
符号还具有忽略对数函数底的含义。但在这种情况下,这很好,因为:
log_b(n) = log_2(n)/log_2(b) ; see below why this is true
这意味着函数log_b()
只是一个相乘常数,即1/log_2(b)
,来自log_2()
由于该表有意强调big-O表示法忽略乘法常数这一事实,因此可以假设其中的所有日志都是基于2
特别是,O(log(1024))
可以解释为log_2(1024)
,它只不过是10
(因为2^10=1024
)
为了验证上面的等式,我们需要检查一下
log_2(n) = log_2(b)log_b(n)
根据log
的定义,我们必须看到n
在右侧是2
,即
n = 2^{log_2(b)log_b(n)}
但右手边是
{2^{log_2(b)}}^{log_b(n)} = b^{log_b(n)} = n
再次根据定义(应用两次)