Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python while循环的时间复杂度_Python_Algorithm_Loops_While Loop_Time Complexity - Fatal编程技术网

Python while循环的时间复杂度

Python while循环的时间复杂度,python,algorithm,loops,while-loop,time-complexity,Python,Algorithm,Loops,While Loop,Time Complexity,我根本不确定我是否理解时间复杂性的计算。我得到了这些循环,这些是我的计算。然而,我完全不知道该怎么说大O在这里 循环1: lst = [] i=1 while i<n: lst = list(range(i)) i *= 2 lst=[] i=1 而i循环1:O(n logn) 循环运行log2(n)次,其平均值为O(logn)。每次迭代(在最坏的情况下)执行n个操作。所以复杂性

我根本不确定我是否理解时间复杂性的计算。我得到了这些循环,这些是我的计算。然而,我完全不知道该怎么说大O在这里

循环1:

lst = []                   
i=1                        
while i<n:
  lst = list(range(i))       
  i *= 2 
lst=[]
i=1
而i循环1:O(n logn)

循环运行log2(n)次,其平均值为O(logn)。每次迭代(在最坏的情况下)执行n个操作。所以复杂性是O(n logn)

循环2:O(对数n)

循环运行log2(n)次,其平均值为O(logn)。我假设赋值
lst=lst+[I]
只是添加节点(而不是创建新列表)。它的平均值是O(1),所以复杂度是O(logn)。如果我错了,分配会创建一个新的列表,因此每次迭代(在最坏的情况下)都会执行n个操作。因此复杂性是O(n logn)

循环3:O(对数n)


就像在循环2中一样。在这里,作业肯定是O(1),而不是假设…

第二个作业是今天早些时候发布的。它可能会帮助您理解所有这些。也许这更适合于。您需要考虑在执行
循环时,执行了多少次。首先考虑它像sweeneyrod所说的那样循环了多少次,然后考虑每次迭代都做了些什么。在考虑迭代次数时,不要使用实际数字,只考虑它与
n
的关系。
i
是否每次都加倍?然后它将以
log2(n)
的增量达到
n
。@KEYSER我知道每个循环将迭代log2n次,因为在每种情况下,I都是双倍的。使我困惑的是除了加倍i之外的其他操作,特别是+=和常规加法之间的差异。
lst = []            
i=1                 
while i<n:
  lst = lst + [i]      
  i *= 2    
lst = []          
i=1                
while i<n:
  lst += [i]         
  i *= 2