大O,我怎么算呢?
Big O, how i can calculate it?
我正在做一个算法,我必须做 Big O,但我不知道怎么做,有人可以帮助我吗?代码是这样的。
我添加了时间库,可以看到算法中的执行时间,但是我不太清楚如何计算Big O
import time
arre=[1, 3, 2, 4, 5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
m=2
sumatoria=sum(arre)
cantidad=sumatoria/m
arre.sort(reverse=True)
arreglo=[]
arrAuxiliar=arre.copy()
definitivo = []
if sumatoria % m==0:
for idx in range(m):
if arre[idx] == cantidad:
aux=[arre[idx]]
definitivo.append(aux)
arrAuxiliar.remove(arre[idx])
else:
arreglo.clear()
arreglo.append(arre[idx])
arrAuxiliar.remove(arre[idx])
if cantidad-arre[idx] in arrAuxiliar:
numero=arre[arre.index(cantidad-arre[idx])]
arreglo.append(numero)
arrAuxiliar.remove(numero)
else:
if idx==m-1:
arreglo+=arrAuxiliar
definitivo.append(arreglo.copy())
print(definitivo)
print("El tiempo de ejecucion es: ", time.time())
Big-O 是一种用于计算算法复杂度的符号,它不能以这种方式计算,像 O(1) 这样的算法的复杂度是当您应用公式来解决问题时,当你使用 O(n) 时是你使用循环时,O(n^2) 是当你使用嵌套循环时,但它不能那样计算。您必须避免使用带有符号 O(n^2) 的算法,因为每个算法执行更多操作并消耗更多时间。
https://www.geeksforgeeks.org/analysis-algorithms-big-o-analysis/
如果第一次触发,您当前的 运行 时间是 O(N)。 N 等于您代码中的 m。所有这一切还假设以下操作都需要恒定的时间(我认为它确实如此)。
通常,您可以将 Big O 视为必须经历某事或迭代的次数。如果你有一个 运行s N 次的 for 循环,那么你需要 O(N) 时间。现在在 for 循环中,如果你正在做一些需要时间来计算的动作,你可能会有各种奇怪的计时。第一条评论解释的很详细,大家可以抽时间看看
我正在做一个算法,我必须做 Big O,但我不知道怎么做,有人可以帮助我吗?代码是这样的。 我添加了时间库,可以看到算法中的执行时间,但是我不太清楚如何计算Big O
import time
arre=[1, 3, 2, 4, 5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
m=2
sumatoria=sum(arre)
cantidad=sumatoria/m
arre.sort(reverse=True)
arreglo=[]
arrAuxiliar=arre.copy()
definitivo = []
if sumatoria % m==0:
for idx in range(m):
if arre[idx] == cantidad:
aux=[arre[idx]]
definitivo.append(aux)
arrAuxiliar.remove(arre[idx])
else:
arreglo.clear()
arreglo.append(arre[idx])
arrAuxiliar.remove(arre[idx])
if cantidad-arre[idx] in arrAuxiliar:
numero=arre[arre.index(cantidad-arre[idx])]
arreglo.append(numero)
arrAuxiliar.remove(numero)
else:
if idx==m-1:
arreglo+=arrAuxiliar
definitivo.append(arreglo.copy())
print(definitivo)
print("El tiempo de ejecucion es: ", time.time())
Big-O 是一种用于计算算法复杂度的符号,它不能以这种方式计算,像 O(1) 这样的算法的复杂度是当您应用公式来解决问题时,当你使用 O(n) 时是你使用循环时,O(n^2) 是当你使用嵌套循环时,但它不能那样计算。您必须避免使用带有符号 O(n^2) 的算法,因为每个算法执行更多操作并消耗更多时间。
https://www.geeksforgeeks.org/analysis-algorithms-big-o-analysis/
如果第一次触发,您当前的 运行 时间是 O(N)。 N 等于您代码中的 m。所有这一切还假设以下操作都需要恒定的时间(我认为它确实如此)。
通常,您可以将 Big O 视为必须经历某事或迭代的次数。如果你有一个 运行s N 次的 for 循环,那么你需要 O(N) 时间。现在在 for 循环中,如果你正在做一些需要时间来计算的动作,你可能会有各种奇怪的计时。第一条评论解释的很详细,大家可以抽时间看看