[英]What is the time complexity of this function using a built-in function?
假设您使用python内置的sum
函数具有以下compute
函数:
def compute(a_list):
for i in range(0, n): #Line 1
number = sum(a_list[0:i + 1])/(i+1) #Line 2
return number
这样的事情的时间复杂度是什么样的?
Line 1
被执行n次,但Line 2
中,具有内置的sum
函数(O(N)),它会执行N ^ 2的次数? 因此,该算法将为O(n ^ 2)。
对于i的每次迭代,执行第2 Line 2
1 + 2 + 3 + ... + n-2 + n-1 + n。 这些条款的总和是
这个对吗?
我会说第1行执行一次,这会使第2行执行n
次。 列表下标是O(n), sum
也是O(n)。 除法,加法和赋值均为O(1)。
因此, compute
为O(N ^ 2),因为最大项正在评估O(n)次操作O(n)次。
请注意,按照书面形式,它会丢弃所有中间结果,因此可以将其重写为:
def compute(a_list):
return sum(a_list[0:n])/n
就是O(n)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.