当前位置:  开发笔记 > 编程语言 > 正文

二次时间复杂度:为什么以下代码以这种方式计算?

如何解决《二次时间复杂度:为什么以下代码以这种方式计算?》经验,为你挑选了1个好方法。

有人可以解释为什么以下方式计算以下代码复杂度: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)



1> Kasramvd..:

这不是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)

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有