Skip to content
IRC-CodingIRC-Coding
Big O NotationComplejidad de tiempo de ejecuciónEficiencia de algoritmosO(1)O(n)O(log n)Peor casoAlgoritmosFundamentos

Big-O Notation explicada

Big-O Notation describe el crecimiento de tiempo y memoria según el input. Análisis de peor caso.

S

schutzgeist

2 min read
Big-O Notation explicada

Notación Big-O: Complejidad de Tiempo y Eficiencia de Algoritmos

Este artículo es una explicación de conceptos sobre la notación Big-O, incluyendo preguntas de examen y referencias.

De un Vistazo

La notación Big-O describe cómo crecen el tiempo de ejecución o el consumo de memoria de un algoritmo en relación con el tamaño de la entrada: es una medida de eficiencia.

Descripción Técnica Concisa

La notación Big-O se utiliza para analizar la complejidad asintótica de un algoritmo, abstrayéndose de tiempos de ejecución concretos y enfocándose en cómo se comporta con entradas cada vez mayores. Se expresa en el peor caso (“Worst Case”) el número de operaciones o accesos a memoria que requiere un algoritmo. Ejemplos: O(1) = constante, O(n) = lineal, O(n²) = cuadrático, O(log n) = logarítmico. De este modo se pueden comparar algoritmos independientemente de la plataforma de hardware.

Puntos Clave para el Examen

  • Big-O describe el comportamiento del crecimiento de tiempo/memoria
  • Se considera por defecto el “Worst Case”
  • Notaciones típicas: O(1), O(n), O(log n), O(n²), O(n log n)
  • Logarítmico, por ejemplo, en búsqueda binaria (relevante para certificaciones)
  • Los algoritmos cuadráticos son ineficientes con datos grandes
  • Los algoritmos eficientes ahorran recursos, lo que es económicamente relevante
  • El análisis Big-O debe documentarse en algoritmos complejos

Componentes Principales

  1. Constante: O(1)
  2. Lineal: O(n)
  3. Logarítmico: O(log n)
  4. Lineal-logarítmico: O(n log n)
  5. Cuadrático: O(n²)
  6. Cúbico: O(n³)
  7. Exponencial: O(2ⁿ)
  8. Análisis del Worst-Case
  9. Best-Case, Average-Case
  10. Relevancia para Escalabilidad

Ejemplo Práctico

// Comparación: búsqueda lineal vs. búsqueda binaria
Búsqueda lineal: O(n)
Búsqueda binaria: O(log n), solo con listas ordenadas

Explicación: La búsqueda lineal recorre la lista completa; la búsqueda binaria divide el campo de búsqueda por la mitad en cada paso, siendo mucho más eficiente con grandes volúmenes de datos.

Ventajas e Inconvenientes

Ventajas

  • Comparabilidad de algoritmos independiente de la implementación
  • Identificación de posibles cuellos de botella
  • Mejores decisiones en fases de diseño

Inconvenientes

  • No proporciona información sobre tiempos reales en hardware específico
  • Solo considera el Worst-Case sin promedios
  • Es teórico, no siempre transferible directamente a condiciones reales

Preguntas Típicas de Examen (con Respuesta Breve)

  1. ¿Qué describe la notación Big-O? La complejidad de un algoritmo en términos de tiempo o memoria respecto al crecimiento de la entrada.
  2. ¿Qué significa O(1)? El tiempo de ejecución es constante, independiente del tamaño de la entrada.
  3. ¿Cuál es más eficiente: O(n) u O(log n)? O(log n), porque es significativamente más rápido a medida que aumenta el volumen de datos.
  4. ¿Qué representa “n” en O(n)? El número de elementos de entrada.
  5. ¿Qué algoritmo es típicamente O(n log n)? Merge Sort o Quick Sort en promedio.
  6. ¿Por qué O(n²) es problemático? El tiempo de ejecución crece exponencialmente con grandes volúmenes de datos.
  7. ¿Un algoritmo puede ser simultáneamente O(n) y O(n²)? No, siempre se indica el componente dominante.
  8. ¿Cómo documentar Big-O? Mediante comentarios en el código, diagramas o análisis formal.

Referencias Principales

  1. https://www.bigocheatsheet.com/
  2. https://visualgo.net/en
  3. https://www.geeksforgeeks.org/analysis-of-algorithms-set-1-asymptotic-analysis/
  4. https://cs50.harvard.edu/
  5. https://www.youtube.com/results?search_query=big+o+notation
Volver al blog
Share:

Entradas relacionadas