Python 两种算法的运行时复杂性(大O表示法计算)
这两种算法的大O表示法是什么:Python 两种算法的运行时复杂性(大O表示法计算),python,algorithm,runtime,Python,Algorithm,Runtime,这两种算法的大O表示法是什么: def foo1(n): if n > 1: for i in range(int(n)): foo1(1) foo1(n / 2) def foo2(lst1, lst2): i = 1 while i < max(len(lst1), len(lst2)): j = 1 while j < min(len(lst1
def foo1(n):
if n > 1:
for i in range(int(n)):
foo1(1)
foo1(n / 2)
def foo2(lst1, lst2):
i = 1
while i < max(len(lst1), len(lst2)):
j = 1
while j < min(len(lst1), len(lst2)):
j *= 2
i *= 2
def foo1(n):
如果n>1:
对于范围内的i(int(n)):
foo1(1)
食物环境徖生署1(n/2)
def foo2(lst1、lst2):
i=1
而i
我认为foo1运行时复杂性是O(n),因为在这种情况下,如果我看到for循环,我可以这样做:
T(n)=O(n)+O(n/2)
T(n)
等于T(n/2)+n
。应用该公式,我们得到T(n)=O(n)
。简单来说,有n+n/2+n/4+…+1
小于2*n
且为O(n)
的操作foo1(n/n)
这是一个错误吗?不,这是foo1(n/n)=foo1(1),那么你为什么不把它写成foo1(1)?我写了一条同样的评论。好的,我把它改成foo1(1)我除了在foo2的运行时,谢谢你,这是合乎逻辑的。但你们能解释一下把T(n/2)乘以2的方法吗。这里的2是什么。谢谢。@MohammadJaber,这是我的错误,我会改变答案好的,但谢谢你,我不认为主定理在这里对我有帮助,但现在我知道它在这种情况下对我有帮助。。。谢谢