Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两种算法的运行时复杂性(大O表示法计算)_Python_Algorithm_Runtime - Fatal编程技术网

Python 两种算法的运行时复杂性(大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

这两种算法的大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), 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)
    的操作

  • 内环不依赖于外环,因此我们可以独立处理它们<代码>T(n)=O(log(maxlen)*log(minlen))


  • foo1(n/n)
    这是一个错误吗?不,这是foo1(n/n)=foo1(1),那么你为什么不把它写成foo1(1)?我写了一条同样的评论。好的,我把它改成foo1(1)我除了在foo2的运行时,谢谢你,这是合乎逻辑的。但你们能解释一下把T(n/2)乘以2的方法吗。这里的2是什么。谢谢。@MohammadJaber,这是我的错误,我会改变答案好的,但谢谢你,我不认为主定理在这里对我有帮助,但现在我知道它在这种情况下对我有帮助。。。谢谢