Time complexity 计算函数的时间复杂度
我正在考虑如何正确计算此函数的时间复杂度:Time complexity 计算函数的时间复杂度,time-complexity,big-o,Time Complexity,Big O,我正在考虑如何正确计算此函数的时间复杂度: def foo(lst): jump = 1 total = 0 while jump < len(lst): for i in range(0, len(lst), jump): total += i jump = jump * 2 return total def foo(lst): 跳转=1 总数=0 当跳跃
def foo(lst):
jump = 1
total = 0
while jump < len(lst):
for i in range(0, len(lst), jump):
total += i
jump = jump * 2
return total
def foo(lst):
跳转=1
总数=0
当跳跃
我假设它是O(n),其中n是列表的长度。我们的while循环是O(n),for循环也是O(n),这意味着我们得到了2*O(n),它等于O(n)。
我说得对吗?您的计算有错误,对于嵌套循环,我们将外循环的复杂度乘以内循环的复杂度,得到完整的复杂度 如果
n
是列表的长度,则while循环运行log(n)
time,就像每次使用jump=jump*2
内环是这样的,n/1
倍于jump=1
,而n/2
倍于jump=2,所以内环的复杂度是这样的:(n/1)+(n/2)+(n/4)+(n/8)。。。。直到logn次
因此,总时间复杂度=n(1+1/2+1/4+1/8+…直到logn)。这里的n
系数可以忽略不计,因此复杂性是O(n)