代码: -
def complexity(x):
total=0
while(x>0):
x/=2
total+=1
return total
假设x的大小为n。 所以据我说它应该是1 + 5 *(log2(n)+ 1)+ 1。
与解决方案一起提供合理的解释。
答案 0 :(得分:0)
你最初的假设是大O是1 + 5*(log2(n) + 1) + 1
,但是并不完全存在。当我们使用Big O表示法时,我们会删除所有常量,即我们会从估计中删除+1
和5*
。要完全理解原因,您可能希望看到以下问题:https://cs.stackexchange.com/questions/9957/justification-for-neglecting-constants-in-big-o
删除所有常量,答案将变为 log(n)(请注意,所有日志都是彼此不变的因子,所以我们只说log(n)而不是任何特定的日志。 :log2(n)= log10(n)/ log10(2)。