繁体   English   中英

使用内置函数时此函数的时间复杂度是多少?

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

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