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

时间:2019-02-20 08:19:07

标签: python time-complexity

假设您使用python内置的compute函数具有以下sum函数:

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函数(O(n))的sum会被执行n ^ 2次吗?因此该算法为O(n ^ 2)。

对于i的每次迭代,Line 2执行1 + 2 + 3 + ... + n-2 + n-1 + n。这些条款的总和是

enter image description here

这是正确的吗?

1 个答案:

答案 0 :(得分:1)

我想说第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)。