Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Big O Python: Listas

Cuando se habla de algoritmos, es imposible no mencionar el concepto de complejidad del algoritmo, conocido como Big O. Nos ayuda a entender cuán eficiente es un algoritmo.

Seguramente recuerdas que hay muchos algoritmos de ordenamiento. Todos hacen lo mismo, pero de formas distintas. En informática, los algoritmos se comparan según su complejidad, es decir, cuántas operaciones realizan para cumplir su objetivo. Por ejemplo, distintos métodos de ordenamiento requieren diferentes cantidades de pasos para organizar una lista. La cantidad de operaciones exactas depende de los datos de entrada: si la lista ya está ordenada, se harán menos operaciones, aunque siempre habrá algunas para verificar el estado de la lista.

Big O se usa para describir cómo crece el número de operaciones a medida que aumentan los datos 📈

Aquí algunos ejemplos de notación para la complejidad: O(1), O(n), O(nlog(n)).

Sorting Big O

O(1) significa complejidad constante. Por ejemplo, acceder a un elemento de una lista por su índice tiene esta complejidad, ya que no importa el tamaño de la lista. Sin embargo, una función que imprime todos los elementos de una lista tiene una complejidad lineal O(n), porque la cantidad de operaciones será igual al número de elementos. El símbolo n representa esa cantidad de elementos.

El peor caso ocurre cuando el algoritmo necesita realizar el máximo número de operaciones posibles. Si lo comparamos con armar un cubo de Rubik, algunas posiciones iniciales del cubo requieren más movimientos que otras. El peor caso es cuando se necesita el mayor número de movimientos posibles.

Otro ejemplo son los bucles anidados. Imagina que buscamos intersecciones entre dos listas no ordenadas. Para cada elemento de una lista, verificamos todos los elementos de la otra. Si ambas listas tienen n elementos, la búsqueda tendrá una complejidad cuadrática O(n^2).

Hay algoritmos muy eficientes y otros terriblemente ineficientes. Los ineficientes empeoran rápidamente cuando aumenta el número de elementos 📉 Los algoritmos más rápidos no siempre lo son porque sean mejores, sino porque usan más memoria o trabajan en paralelo. La eficiencia es un equilibrio ⚖️ al mejorar algo, sacrificamos otro aspecto.

Big O

Big O es más una evaluación teórica. En la práctica, el tiempo de ejecución depende de muchos factores: el procesador, el sistema operativo, el lenguaje de programación, el acceso a la memoria, entre otros.

💡 La eficiencia del código puede ser un tema delicado.

Muchos piensan que el código debe ser rápido a toda costa, lo que puede causar problemas. La eficiencia excesiva tiende a complicar el código, hacerlo más propenso a errores y difícil de mantener. Lo más importante es que la eficiencia rara vez es una prioridad inmediata, o incluso necesaria. Muchas veces, el problema no está en el código, sino en la base de datos o las consultas a la red. Incluso si el código es lento, podría ser una parte que solo se ejecuta una vez y no afecta el rendimiento general.

📖 Los programadores gastan mucho tiempo preocupándose por partes del código que no son críticas e intentando optimizarlas, lo que afecta negativamente la depuración y el mantenimiento. Debemos olvidar la optimización en el 97% de los casos. La optimización prematura es la raíz de todos los males. Y debemos enfocarnos en el 3% restante. - Donald Knuth


Materiales adicionales

  1. Big-O Cheat Sheet 📚

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY