繁体   English   中英

一个简单的python程序的时间复杂度

[英]time complexity of a simple python program

def foo(n):
    for i in range(n):
        for k in range(1,i):
            if k>n/k:
                return k

这个程序的时间复杂度是多少? 答案说它的 O(n)。 欢迎对此做出任何解释

编辑:错字

答案说它的 O(n)。

是的,复杂度是O(N)因为

for k in range(i,i)

for循环永远不会执行。

所以,你的代码相当于

def foo(n):
    for i in range(n):
       pass

更新

def foo(n):
    for i in range(n):
        for k in range(1,i):
            if k>n/k:
                return k

k>n/k等价于k^2 > n并且它是k > sqrt(n)

循环主要执行sqrt(n)次,内循环执行0 次,然后是1 次,然后是2 次,....., sqrt(n) 次才从函数返回。

所以,总复杂度是O(sqrt(n) * sqrt(n))O(n)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM