[英]what is the time complexity of the algorithm?
这是一个算法教科书的问题,我认为时间复杂度是log(n!),但是我的同学说它是nlog(n)。 非常感谢你的回复!!
count ← 0
for i ← 1 to n do
j ← ⌊n/2⌋
while j ≥ 1 do
count ← count + 1
if j is odd then
j←0
else
j ← j/2
end if
end while
end for
我认为时间复杂度是
log(n!)
,但我的同学说它是nlog(n)
。
你是对的。 从斯特林的公式可以看出,
log n! = n * log n - n +O(log(n)),
( log
是这里的自然对数)更准确地说:
log n! = (n + 1/2) * log n - n + 1/2 * log (2π) + O(1/n)
所以O(log n!)
和O(n*log n)
是同一个类。
在最坏的情况下,n = 2 p
所以, n * log
2 (n)
迭代,或O(n log(n))
时间复杂度
-
(根据评论,日志库的复杂性不是必需的,因为log 2 (x)实际上是log(x)/ log(2),即log(x)乘以常数 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.