
Big O notation o notación Big O: Todo lo que necesitas saber 2025

Juan Correa
Desarrollador de Software Senior
¿Crees que aprender Big O notation o notación Big O es sólo para pasar entrevistas técnicas?
Pues...¡No! Big O notation es una herramienta elemental como programador, ya que te ayuda a entender la eficiencia de tus algoritmos y a mejorar el rendimiento de tu código.
En este artículo, aprenderás qué es Big O notation, por qué es importante, cómo calcularla y ejemplos de algoritmos con Big O notation.
Si lo prefieres, también puedes ver el curso de Big O notation en video:
Table of Contents
- Qué es Big O notation o notación Big O
- Por qué Big O notation es importante
- Notaciones de Big O comunes
- Cómo calcular el Big O de un algoritmo
- Ejemplos matemáticos de análisis de Big O
- Ejemplos de algoritmos con Big O notation
- Comparación de Big O notation, Big Omega y Big Theta
- Preguntas frecuentes de Big O notation
- Siguientes pasos
Qué es Big O notation o notación Big O
Big O notation o notación Big O es una forma de medir la eficiencia de un algoritmo en términos de cuánto tiempo o espacio necesita para ejecutarse en función del tamaño de la entrada.
La clave aquí es la relación entre el tiempo o espacio y el tamaño de la entrada.
Por qué Big O notation es importante
En la vida real, cuando desarrollas una aplicación, es probable que tengas que trabajar con grandes cantidades de datos. Por ejemplo, una base de datos con millones de registros o un archivo de texto con miles de líneas.
En estos casos, la eficiencia de tus algoritmos es crucial para que tu aplicación funcione correctamente y no se quede colgada.
Ya sea que estés desarrollando un endpoint de una API, un componente de UI o un script de automatización, Big O notation te ayudará a:
- Evaluar la eficiencia de tus algoritmos: ¿Cuánto tiempo o espacio necesita tu algoritmo para ejecutarse en función del tamaño de la entrada?
- Comparar algoritmos: ¿Cuál es el algoritmo más eficiente para resolver un problema?
- Optimizar tu código: ¿Cómo puedes mejorar la eficiencia de tu algoritmo?
Cualquier milisegundo o incluso micro segundo que puedas ahorrar en la ejecución de tu algoritmo, puede hacer una gran diferencia en la experiencia del usuario.
Y es parte de lo que separa a un buen programador de un excelente programador.
Notaciones de Big O comunes
Las notaciones de Big O más comunes son:
- O(1) - Constant time o notación constante
- O(log n) - Logarithmic time o notación logarítmica
- O(n) - Linear time o notación lineal
- O(n log n) - Linearithmic time o notación lineal-logarítmica
- O(n^2) - Quadratic time o notación cuadrática
- O(2^n) - Exponential time o notación exponencial
- O(n!) - Factorial time o notación factorial

Si quieres ver ejemplos de algoritmos con estas notaciones, da click en el siguiente enlace:
Cómo calcular el Big O de un algoritmo
Para calcular el Big O de un algoritmo, sigue estos pasos:
- Identifica el tamaño de la entrada: ¿Cuál es el tamaño de la entrada de tu algoritmo? Por ejemplo, el número de elementos en un array o el número de nodos en un árbol.
- Identifica las operaciones fundamentales: Puedes ver esto como cuántos pasos va a ejecutar tu algoritmo según el input que reciba. Por ejemplo, si tienes un bucle
forque recorre un array denelementos, el bucle se ejecutaránveces. - Encuentra la relación entre el tiempo o espacio y el tamaño de la entrada: ¿Cuántas operaciones fundamentales realiza tu algoritmo en función del tamaño de la entrada?
- Elimina las constantes y los términos de menor importancia: ¿Cuál es el término dominante en la relación? Por ejemplo, si tienes
O(2n + 1), elimina la constante2y el término1para obtenerO(n). - Identifica la notación de Big O: ¿Cuál es la notación de Big O de tu algoritmo? Por ejemplo,
O(1),O(log n),O(n),O(n log n),O(n^2),O(2^n)oO(n!).
Para ver un ejemplo de análisis, sigue leyendo.
Ejemplo 1: O(1) - Tiempo constante
function sum(a, b) {
return a + b
}
En este caso, la función sum realiza una sola operación fundamental, que es la suma de dos números. No importa cuánto sean a y b, la función siempre realizará una sola operación.
Por lo tanto, la notación de Big O de esta función es O(1).
Ejemplo 2: O(n) - Tiempo lineal
function sumArray(arr) {
let sum = 0
for (let i = 0; i < arr.length; i++) {
sum += arr[i]
}
return sum
}
En este caso, la función sumArray recorre un array de n elementos y realiza una operación fundamental en cada iteración del bucle for.
Por ejemplo: Si el array tiene 5 elementos, el bucle se ejecutará 5 veces. Si el array tiene 10 elementos, el bucle se ejecutará 10 veces.
Representamos el número de operaciones fundamentales como n, donde n es el número de elementos en el array.
Por lo tanto, la notación de Big O de esta función es O(n).
Ejemplo 3: O(n^2) - Tiempo cuadrático
function sumMatrix(matrix) {
let sum = 0
for (let i = 0; i < matrix.length; i++) {
for (let j = 0; j < matrix[i].length; j++) {
sum += matrix[i][j]
}
}
return sum
}
En este caso, la función sumMatrix recorre una matriz de n filas y m columnas y realiza una operación fundamental en cada celda de la matriz.
Por ejemplo: Si la matriz es de 2x2, el bucle anidado se ejecutará 4 veces. Si la matriz es de 3x3, el bucle anidado se ejecutará 9 veces.
Representamos el número de operaciones fundamentales como n^2, donde n es el número de filas y m es el número de columnas en la matriz.
Por lo tanto, la notación de Big O de esta función es O(n^2).
Ejemplos matemáticos de análisis de Big O
A continuación te muestro una tabla donde se compara un valor n con diferentes notaciones de Big O en términos matemáticos:
| n | O(1) | O(log n) | O(n) | O(n log n) | O(n^2) | O(2^n) | O(n!) |
|---|---|---|---|---|---|---|---|
| 10 | 1 | 3.32 | 10 | 33.2 | 100 | 1024 | 3628800 |
| 100 | 1 | 6.64 | 100 | 664 | 10000 | 1.27e+30 | 9.33e+157 |
| 1000 | 1 | 9.97 | 1000 | 9967 | 1000000 | 1.07e+301 | 4.02e+2567 |
Explicación:
- Para
O(1), el valor es constante sin importar el tamaño den. - Para
O(log n), el valor crece de forma logarítmica. Es decir, crece lentamente a medida quenaumenta. - Para
O(n), el valor crece de forma lineal. Es decir, crece en la misma proporción quen. - Para
O(n log n), el valor crece de forma lineal-logarítmica. Es decir, crece más rápido queO(n)pero más lento queO(n^2). - Para
O(n^2), el valor crece de forma cuadrática. Es decir, crece más rápido queO(n)yO(n log n). - Para
O(2^n), el valor crece de forma exponencial. Es decir, crece muy rápido a medida quenaumenta. - Para
O(n!), el valor crece de forma factorial. Es decir, crece extremadamente rápido a medida quenaumenta.
Ejemplos de algoritmos con Big O notation
Ahora te comparto una tabla comparativa con el tipo de notación, la notación y ejemplos de diferentes algoritmos:
| Tipo de notación | Notación | Ejemplos de algoritmos |
|---|---|---|
| O(1) | Constant time | Acceder a un elemento de un array por índice |
| O(log n) | Logarithmic time | Búsqueda binaria |
| O(n) | Linear time | Recorrer un array |
| O(n log n) | Linearithmic time | Algoritmo de ordenación QuickSort |
| O(n^2) | Quadratic time | Algoritmo de ordenación BubbleSort |
| O(2^n) | Exponential time | Algoritmo de Fibonacci recursivo |
| O(n!) | Factorial time | Algoritmo de permutaciones |
Comparación de Big O notation, Big Omega y Big Theta
Además de Big O notation, existen otras notaciones como Big Omega y Big Theta que también se utilizan para analizar la eficiencia de los algoritmos.
Aquí te dejo una tabla comparativa de Big O notation, Big Omega y Big Theta como notación, la definición y la explicación:
| Notación | Definición | Explicación |
|---|---|---|
| Big O | f(n) = O(g(n)) si f(n) <= c * g(n) para todo n >= n0 | Big O notation se utiliza para analizar el peor caso de un algoritmo. |
| Big Omega | f(n) = Ω(g(n)) si f(n) >= c * g(n) para todo n >= n0 | Big Omega se utiliza para analizar el mejor caso de un algoritmo. |
| Big Theta | f(n) = Θ(g(n)) si c1 * g(n) <= f(n) <= c2 * g(n) para todo n >= n0 | Big Theta se utiliza para analizar el caso promedio de un algoritmo. |
En cada ejemplo:
f(n)es la función que representa el tiempo o espacio de un algoritmo.g(n)es la función que representa el tiempo o espacio de un algoritmo ideal.ces una constante positiva.n0es un número entero positivo.
Éstas notaciones son útiles para analizar diferentes escenarios de un algoritmo y tener una visión más completa de su eficiencia.
En mi experiencia, va a ser más común ver Big O notation en entrevistas técnicas y en la vida real, pero es bueno tener en cuenta las otras notaciones.
Preguntas frecuentes de Big O notation
¿Cómo se calcula Big O notation?
Para calcular Big O notation, identifica el tamaño de la entrada, las operaciones fundamentales, la relación entre el tiempo o espacio y el tamaño de la entrada, elimina las constantes y los términos de menor importancia, e identifica la notación de Big O.
¿Cuál es la diferencia entre calcular el espacio y el tiempo en Big O?
El tiempo se refiere a cuánto tiempo necesita el algoritmo para ejecutarse en función del tamaño de la entrada, mientras que el espacio se refiere a cuánta memoria necesita el algoritmo para ejecutarse en función del tamaño de la entrada.
Cuando digo tiempo, me refiero a la cantidad de operaciones fundamentales que realiza el algoritmo y NO a segundos, milisegundos o microsegundos.
Y cuando digo espacio, me refiero a la cantidad de memoria que necesita el algoritmo y NO a bytes, kilobytes o megabytes.
¿Qué significa O(1) en Big O notation?
O(1) significa que el algoritmo tiene una complejidad constante. Es decir, el tiempo o espacio que necesita el algoritmo para ejecutarse no depende del tamaño de la entrada.
¿Qué significa O(n) en Big O notation?
O(n) significa que el algoritmo tiene una complejidad lineal. Es decir, el tiempo o espacio que necesita el algoritmo para ejecutarse crece en la misma proporción que el tamaño de la entrada.
¿Qué significa O(n^2) en Big O notation?
O(n^2) significa que el algoritmo tiene una complejidad cuadrática. Es decir, el tiempo o espacio que necesita el algoritmo para ejecutarse crece en función del cuadrado del tamaño de la entrada.
¿Qué significa O(log n) en Big O notation?
O(log n) significa que el algoritmo tiene una complejidad logarítmica. Es decir, el tiempo o espacio que necesita el algoritmo para ejecutarse crece de forma logarítmica en función del tamaño de la entrada.
¿Qué significa O(n log n) en Big O notation?
O(n log n) significa que el algoritmo tiene una complejidad lineal-logarítmica. Es decir, el tiempo o espacio que necesita el algoritmo para ejecutarse crece de forma lineal-logarítmica en función del tamaño de la entrada.
Siguientes pasos
¡Felicidades! Ahora sabes qué es Big O notation, por qué es importante, cómo calcularla y ejemplos de algoritmos con Big O notation.