¿La notación cuadrática siempre consiste en 2 bucles juntos?
PREGUNTA:
¿Las notaciones cuadráticas son siempre 2 bucles juntos? 🙃
RESPUESTA:
Casi siempre, pero hay otras formas de llegar a O(n²).
O(n²) significa que si el tamaño de los datos de entrada N aumenta, el tiempo de ejecución crece a N².
Ejemplo clásico - dos bucles anidados:
for i in range(n):
for j in range(n):
print(i, j) # Esto se ejecuta n n veces → O(n²)*
Pero hay otros casos menos obvios:
✅ Algoritmos que comparan cada elemento con todos los demás (como el Bubble Sort o Selection Sort) -> los verás más adelante.
✅ Algoritmos que dividen los datos en grupos y luego los recorren con otro bucle.
✅ Recursividad: hacer llamadas anidadas de forma cuadrática.
Ejemplo raro de O(n²) - sin dos bucles anidados:
def funcion_cuadratica(n):
if n == 0:
return
for i in range(n):
print(i)
funcion_cuadratica(n - 1) # Llamada recursiva O(n) veces
Aquí, cada llamada imprime n elementos, y hay n llamadas, lo que da O(n²).
Entonces, como puedes ver, que haya dos bucles anidados es la forma más común, pero no la única manera de llegar a O(n²).