Hay muchos factores que pueden hacer que un algoritmo sea bueno o malo.
Teóricamente, la productividad de un algoritmo se juzga por varios parámetros, como el tiempo que lleva ejecutar o el espacio que requiere para ejecutar una determinada cantidad de entrada.
Complejidad del tiempo explicada de la mejor manera posible:
Sin embargo, prácticamente, la productividad de un algoritmo depende de la aplicación para la que se utiliza el algoritmo. Un algoritmo con mayor complejidad de tiempo puede funcionar mucho mejor que un algoritmo con menor complejidad de tiempo para algunas tareas específicas.
- ¿Qué implica reequilibrar un anillo hash?
- ¿Qué desearías haber sabido antes de tu primera pasantía de desarrollador de software?
- ¿Por qué te gusta trabajar en el campo de la informática?
- ¿Cuáles son las habilidades más importantes de un emprendedor TECH?
- ¿Todas las herramientas de software finalmente se basarán en la nube y se utilizarán a través de un navegador?
Déjame intentar explicar esto con un ejemplo
Tomemos dos algoritmos de búsqueda:
- Búsqueda lineal: va una por una a cada celda e intenta hacer coincidir el valor, si no tiene éxito, pasa a la siguiente celda, y así sucesivamente
- Búsqueda binaria: compara el valor de búsqueda con el elemento central y luego elimina la mitad de la matriz, luego compara nuevamente el valor con el elemento central de la matriz sobrante, y así sucesivamente
Ahora, la complejidad de tiempo de la búsqueda lineal es O (n) donde como la complejidad de tiempo de la búsqueda binaria es O (log n) que es menor que O (n), esto significa que la búsqueda binaria idealmente tomaría menos tiempo para encontrar una coincidencia como en comparación con la búsqueda lineal.
Para entender la notación Big O, puedes ver este increíble video:
Pero considere este caso, en aras de la comprensión, la búsqueda binaria es aplicable solo en elementos ordenados, pero en este caso la matriz no está ordenada, por lo que primero tendríamos que aplicar un algoritmo de clasificación para ordenar los elementos en la matriz, esto será agregar al tiempo de ejecución total del programa, por lo tanto, podemos decir que para una aplicación de este tipo donde los elementos no están ordenados, es mejor usar Liner Search que Binary Search
La productividad de un algoritmo depende de dónde y cómo se puede utilizar de la mejor manera.