Entre el conjunto de elementos a ordenar se selecciona uno, llamado pivote.
Se colocan todos los elementos a la derecha y a la izquierda del pivote según el criterio de ordenación. De esta forma el elemento pivote estará en su lugar correspondiente del listado.
El paso anterior se repite para cada sub-lista, seleccionando un nuevo pivote. Cuando alguna sub-lista tenga un solo elemento el algoritmo termina.
Complejidad
En el caso en que los pivotes sean un extremo de la lista la complejidad es de O(n2). De media la complejidad del algoritmo es de O(nlogn). Por tanto, la selección del pivote es un paso clave que nos ayudará a mejorar la eficiencia del algoritmo.
Implementación en Javascript
const quickSort = ( [ x = [], ...xs ] ) =>
{
return ( x.length === 0 ) ? [] : [
...quickSort( xs.filter( y => y <= x ) ),
x,
...quickSort( xs.filter( y => y > x ) )
];
}
const array = [10, 4, 40, 32, 67, 12, 43, 31, 65, 1];
const resultado = quickSort(array);
document.write(resultado);