[英]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.