sábado, 3 de agosto de 2013

Quince algoritmos de ordenación en seis minutos


Interesante vídeo sobre los algoritmos de ordenación más conocidos. En el vídeo aparecen 15 algoritmos diferentes, animados y con sonido, que nos dan una idea de cómo funciona cada uno. Estos algoritmos son muy útiles y cobran vital importancia cuando hay que ordenar grandes cantidades de datos, porque cada uno tiene sus pro y sus contra.

Método Quick Sort
Método Quick Sort: ”. Este algoritmo fue desarrollado por el británico Tony Hoare y es considerado hasta la fecha el algoritmo de ordenamiento más rápido que existe.
En computación y matemáticas un algoritmo de ordenamiento es un algoritmo que pone elementos de una lista o un vector en una secuencia dada por una relación de orden, es decir, el resultado de salida ha de ser una permutación —o reordenamiento— de la entrada que satisfaga la relación de orden dada. Las relaciones de orden más usadas son el orden numérico y el orden lexicográfico. Ordenamientos eficientes son importantes para optimizar el uso de otros algoritmos (como los de búsqueda y fusión) que requieren listas ordenadas para una ejecución rápida. También es útil para poner datos en forma canónica y para generar resultados legibles por humanos.

Quicksort en acción sobre una lista de números aleatorios.
Las líneas horizontales son valores pivote.
Desde los comienzos de la computación, el problema del ordenamiento ha atraído gran cantidad de investigación, tal vez debido a la complejidad de resolverlo eficientemente a pesar de su planteamiento simple y familiar. Por ejemplo, BubbleSort fue analizado desde 1956.1 Aunque muchos puedan considerarlo un problema resuelto, nuevos y útiles algoritmos de ordenamiento se siguen inventado hasta el día de hoy (por ejemplo, el ordenamiento de biblioteca se publicó por primera vez en el 2004). Los algoritmos de ordenamiento son comunes en las clases introductorias a la computación, donde la abundancia de algoritmos para el problema proporciona una gentil introducción a la variedad de conceptos núcleo de los algoritmos, como notación de O mayúscula, algoritmos divide y vencerás, estructuras de datos, análisis de los casos peor, mejor, y promedio, y límites inferiores. [Vía Wikipedia]

No puedo dejar de pensar en aquellos años felices cuando estudiaba diagramas y programación en la secundaria, y algoritmos y estructuras de datos en la universidad.