¿Qué es la Notación Big O?
La notación Big O es una forma matemática de expresar el rendimiento de un algoritmo.
Por lo tanto, nos indica lo eficiente que es. Y de este modo, lo podemos comparar con otros.
🔥 Descubre el SISTEMA con el que +170 ANDROID Developers han mejorado su situación laboral ↙️
SISTEMA ANDROID
Es una manera de poder expresar de manera abstracta, la capacidad de proceso que tiene un algoritmo. Y nos sirve para determinar si aumentando los valores de entrada, el algoritmo va a ser más o menos rápido.
Vamos a poner números y que esto quede más claro. 😉
- Imagina un algoritmo al que si se le pasa
1parámetro de entrada, tarda1segundo en devolver el resultado de salida - Si se le pasan
2parámetros de entrada, tarda2segundos en completarse - Si se le pasan
3parámetros de entrada, tarda3segundos en completarse
Sencillo, ¿verdad?
Pues esto sería una progresión aritmética. ✅
Vayamos ahora con otro algoritmo:
- A este si se le pasa
1parámetro de entrada, tarda2segundos en devolver el resultado de salida. - Pero… si se le pasan
2parámetros de entrada, tarda4segundos en completarse - Y si se le pasan
4parámetros de entrada, tarda8segundos en completarse
Esto ya no es lineal, ¿a qué no?
De hecho, se ve claro que la salida es el doble de la entrada.
Pues este algoritmo se correspondería con una progresión geométrica. ✅
Otro ejemplo más:
- A este, si se le pasa
1parámetro de entrada, tarda1segundo en completarse - Si se le pasan
2parámetros de entrada, tarda4segundos en completarse - Si se le pasan
3parámetros de entrada, tarda9segundos en completarse
Vemos que la salida es el cuadrado de la entrada.
La curva que se vería en la gráfica que saldría de aquí, sería más pronuncionada aún que la anterior.
Sería una progresión cuadrática. ✅
En el primer caso, la Big O sería O(n).
En el segundo, O(2 * n).
Y en el tercero, O(n2).
Ventajas de la Notación Big O
Lo bueno de la notación Big O es que permite abstraernos de la máquina donde se está ejecutando. Por lo tanto, nos podemos centrar en lo eficiente que es el código en sí.
No queremos que si se corre el programa sobre una máquina más potente, el resultado sea diferente.
No sería no sería un método muy práctico de medida, ¿a qué no? 😊
También puedes solicitar que te revise tus algoritmos.
Valores típicos
Algunos de los valores típicos de la Big O, suelen ser estos:
O(1)–> Tiempo constanteO(log n)–> Tiempo logarítmicoO(n)–> Tiempo linealO(n2)–> Tiempo cuadráticoO(n!)–> Tiempo factorial
Como habrás podido suponer, están ordenados de más eficiente a menos.
Curiosidad
La O viene de «Order».
Es decir, de clasificar el orden de magnitud de de la función a analizar.
Y como otra curiosidad, comentarte que en la membresía, tenemos un canal de retos, donde puedes proponer algoritmos que implementar en Kotlin.