Clasificación Rápida Quicksort
Clasificación Rápida Quicksort
Clasificación Rápida Quicksort
El primer algoritmo O(nlogn) que se estudia y tal vez el mas eficiente para clasificación interna
recibe el nombre de clasificación rápida, la esencia del método consiste en clasificar un arreglo
A[1],….. A[n] tomando en el arreglo un valor clave y como elemento pivote alrededor del cual
reorganizar los elementos del arreglo. Es de esperar que el pivote este cercano al valor medio
de la clave del arreglo, de forma que este precedido por una mitad de las claves y seguido por
la otra mitad. Se permutan los elementos del arreglo con el fin de que para alguna j todos los
registros con claves menores que v aparezcan en A[1],….. A[j] y todos aquellos con clave v o
mayores en A[j+1],….. A[n].Después se aplica recursivamente la clasificación rápida a A[1],…….
A[j y a A[j+1],….. A[n]] para clasificar ambos grupos de elementos dados que todas las claves
del primer grupo proceden a todas las claves del segundo grupo, todo el arreglo quedara
ordenado.
Menores que el valor del pivote aparecen a la izquierda de las demás. Para realizar esto, se
introducen dos cursores, z y d en un principio en los extremos izquierdo y derecho
respectivamente de la porción de A que se esta clasificando. Los elementos a la izquierda de z
esto es A[i],…………A[z-1] siempre tendrán claves mayores o iguales al pivote y los elementos
del centro estarán mezclados como se muestra en la figura 8.12
Ahora sea T(n) el tiempo promedio consumido por la clasificación rápida para ordenar n
elementos es evidente que T(1) es alguna constante c1 ya que en un elemento esta
clasificación no hace llamadas recursivas a si mismas cuando n>1,se supone que todos los
elementos tienen clave distinta se sabe que la clasificación rápida tomara al pivote y dividirá el
subarreglos consumiendo un tiempo c2n para hacerlo para alguna constante c2.
Otra mejora de la clasificación rápida esta relacionada con lo que sucede cuando se toman
subarreglos pequeños. Los métodos simples O(n2) son mejores que el método O(nlogn) para n
pequeñas. La pequeñez de n depende de muchos factores como el tiempo empleado en una
llamada recursiva la cual es una propiedad de la arquitectura de la maquina y de la estrategia
utilizada por el compilador para realizar las llamadas a procedimientos en el lenguaje en que se
escribió el método de clasificación Knuth sugiere 9 como el tamaño del subarreglos en el que
Quicksort debe llamar a un algoritmo de clasificación mas simples.
Existe otra forma de acelerar Quicksort que en realidad es una forma de canjear espacio por
tiempo la misma idea es valida para cualquier otro algoritmo de clasificación si se tiene espacio
disponibles se crea un arreglo de apuntadores a los registros de l arreglo A se efectúan las
comparaciones entre las claves de los registros apuntadores pero sin mover los registros en
vez de eso se mueven los apuntadores a los registros de la misma forma que la clasificación
rápida mueve los registro al final los apuntadores leídos de izquierda a derecha apuntan a los
registros en el orden deseado y será relativamente fácil reordenar los registros de A en el
orden correcto.