El Algoritmo Quicksort


El ordenamiento rápido (quicksort en inglés) es un algoritmo de ordenacion creado por el científico británico en computación C. A. R. Hoare.

En la ordenación por fusión se pone el énfasis en cómo combinar los subproblemas resueltos, mientras que la operación de descomponer en subproblemas es trivial. Sin embargo, si al descomponer el vector, los elementos del primer subvector fueran todos menores o iguales que los del segundo subvector, no habría que realizar ninguna operación de combinación. En este caso, la descomposición es algo más compleja, pero la combinación es trivial.

Esta es la idea que subyace al algoritmo quicksort, que realiza el siguiente proceso:

Para realizar la descomposición, se suele elegir como pivote el primer elemento del vector. Para almacenar los subvectores, se puede usar el propio vector situando los menores que el pivote a su izquierda, y los mayores a su derecha. Una forma eficiente de realizar este proceso es comenzando a recorrer el vector por ambos extremos. En el recorrido de izquierda a derecha, nos detenemos cuando se encuentre un elemento mayor que el pivote. En el recorrido de derecha izquierda, nos detenemos al encontrar un elemento menor o igual que el pivote. Entonces se intercambian ambos elementos, y se prosigue el recorrido. Cuando los recorridos se cruzan, el vector está descompuesto satisfactoriamente:

Como se puede suponer, la eficiencia del algoritmo depende de la posición en la que termine el pivote elegido.

No es extraño, pues, que la mayoría de optimizaciones que se aplican al algoritmo se centren en la elección del pivote.

A continuación se muestra un ejemplo de su funcionamiento:


Ejemplo de un grafo

En el apartado de visualización podrás conocer su funcionamiento. Introduce los elementos del vector separados por comas y pulsa ACTUALIZAR. A continuación podrás visualizar el avance del algoritmo y de las estructuras de datos utilizando los botones de control de la parte superior.