有人可以解释为什么以下方式计算以下代码复杂度:1 + 2 + 3 + 4 + ... +(n-2)+(n-1)+ n = O(n ^ 2)
def CalculateAveragesTotElementOverzicht(inputlist): resultlist = [0]*len(inputlist) for i in range(0,len(inputlist)): som = 0 for j in range(0,i+1): som += inputlist[j] average = som/(i+1) resultlist[i] = average return resultlist
Kasramvd.. 8
这不是O(n)
O(n 2).那是因为你有两个循环,外部的一个迭代0
从而n
内部一个循环0
到一次性变量size(i
),在每次迭代中它将生成以下范围:
range(0,0+1) # 1 iteration range(0,1+1) # 2 iteration range(0,2+1) # 3 iteration ...
因此,最后,你将有1 + 2 + 3 + ... + n迭代,其复杂性计算为fllows:
n*(n + 1)/ 2 = 1/2 n 2 + 1/2n = O(n 2)
这不是O(n)
O(n 2).那是因为你有两个循环,外部的一个迭代0
从而n
内部一个循环0
到一次性变量size(i
),在每次迭代中它将生成以下范围:
range(0,0+1) # 1 iteration range(0,1+1) # 2 iteration range(0,2+1) # 3 iteration ...
因此,最后,你将有1 + 2 + 3 + ... + n迭代,其复杂性计算为fllows:
n*(n + 1)/ 2 = 1/2 n 2 + 1/2n = O(n 2)