下面给出的代码的复杂性是多少?

时间:2015-07-20 06:47:40

标签: python complexity-theory

代码: -

def complexity(x):
  total=0
  while(x>0):
    x/=2
    total+=1
  return total

假设x的大小为n。 所以据我说它应该是1 + 5 *(log2(n)+ 1)+ 1。

与解决方案一起提供合理的解释。

1 个答案:

答案 0 :(得分:0)

你最初的假设是大O是1 + 5*(log2(n) + 1) + 1,但是并不完全存在。当我们使用Big O表示法时,我们会删除所有常量,即我们会从估计中删除+15*。要完全理解原因,您可能希望看到以下问题:https://cs.stackexchange.com/questions/9957/justification-for-neglecting-constants-in-big-o

删除所有常量,答案将变为 log(n)(请注意,所有日志都是彼此不变的因子,所以我们只说log(n)而不是任何特定的日志。 :log2(n)= log10(n)/ log10(2)。