如何为 python 代码找到合适的复杂度
How can I find the right complexity for the python code
下面的复杂度是多少,
在我的理解中应该是 for inside for,所以 n**2
。
但我理解是n**3
。
哪个是对的?
n=int(input())
L=[]
for i in range (n):
for j in range (n):
L.append(i*j)
for i in range (n):
l=L[:]+[i]
浅列表复制的时间复杂度——例如 list.copy() 或切片列表[:]——与列表中的元素数量成线性关系。对于 n 个列表元素,时间复杂度为 O(n)。为什么?因为 Python 遍历列表中的所有元素并将对象引用的副本添加到新列表(按引用复制)。
当你运行:
for i in range (n):
l=L[:]+[i]
代码 运行s n * len(L)
次。因为 L
是 n*n
长,所以它将是 n*n*n
或 O(n**3)
.
下面的复杂度是多少,
在我的理解中应该是 for inside for,所以 n**2
。
但我理解是n**3
。
哪个是对的?
n=int(input())
L=[]
for i in range (n):
for j in range (n):
L.append(i*j)
for i in range (n):
l=L[:]+[i]
浅列表复制的时间复杂度——例如 list.copy() 或切片列表[:]——与列表中的元素数量成线性关系。对于 n 个列表元素,时间复杂度为 O(n)。为什么?因为 Python 遍历列表中的所有元素并将对象引用的副本添加到新列表(按引用复制)。
当你运行:
for i in range (n):
l=L[:]+[i]
代码 运行s n * len(L)
次。因为 L
是 n*n
长,所以它将是 n*n*n
或 O(n**3)
.