DAA - Clasificación rápida

Se utiliza según el principio de divide y vencerás. La clasificación rápida es un algoritmo de elección en muchas situaciones, ya que no es difícil de implementar. Es un buen tipo de propósito general y consume relativamente menos recursos durante la ejecución.

Ventajas

  • Está en su lugar ya que usa solo una pequeña pila auxiliar.

  • Solo requiere n (log n) hora de ordenar n artículos.

  • Tiene un lazo interior extremadamente corto.

  • Este algoritmo ha sido sometido a un análisis matemático completo, se puede hacer una declaración muy precisa sobre problemas de rendimiento.

Desventajas

  • Es recursivo. Especialmente, si la recursividad no está disponible, la implementación es extremadamente complicada.

  • Requiere tiempo cuadrático (es decir, n2) en el peor de los casos.

  • Es frágil, es decir, un simple error en la implementación puede pasar desapercibido y hacer que funcione mal.

La clasificación rápida funciona particionando una matriz determinada A[p ... r] en dos submatrices no vacías A[p ... q] y A[q+1 ... r] tal que cada tecla en A[p ... q] es menor o igual que cada clave en A[q+1 ... r].

Luego, las dos submatrices se ordenan mediante llamadas recursivas a Quick sort. La posición exacta de la partición depende de la matriz y el índice dadosq se calcula como parte del procedimiento de partición.

Algorithm: Quick-Sort (A, p, r) 
if p < r then 
   q Partition (A, p, r) 
   Quick-Sort (A, p, q) 
   Quick-Sort (A, q + r, r)

Tenga en cuenta que para ordenar toda la matriz, la llamada inicial debe ser Quick-Sort (A, 1, length[A])

Como primer paso, Quick Sort elige uno de los elementos de la matriz para ordenarlo como pivote. Luego, la matriz se divide a ambos lados del pivote. Los elementos que son menores o iguales que pivotar se moverán hacia la izquierda, mientras que los elementos que son mayores o iguales que pivotar se moverán hacia la derecha.

Particionar la matriz

El procedimiento de particionamiento reorganiza los subarreglos en su lugar.

Function: Partition (A, p, r) 
x ← A[p] 
i ← p-1 
j ← r+1 
while TRUE do 
   Repeat j ← j - 1 
   until A[j] ≤ x  
   Repeat i← i+1 
   until A[i] ≥ x  
   if i < j then  
      exchange A[i] ↔ A[j] 
   else  
      return j

Análisis

La complejidad del peor caso del algoritmo de clasificación rápida es O(n2). Sin embargo, al usar esta técnica, en casos promedio generalmente obtenemos la salida enO(n log n) hora.