El algoritmo quicksort es un algoritmo de ordenamiento, como su nombre lo dice, es de los más rápidos y es recomendable su uso (no como el de burbuja).
Ver quicksort animado con jquery.
Aquí anexo el algoritmo de quicksort en javascript:
Función Quicksort
function quicksort(primero,ultimo){ //definimos variables indices i = primero j = ultimo //sacamos el pivote de la mitad del arreglo pivote = arreglo[parseInt((i+j)/2)]; //repetir hasta que i siga siendo menor que j do{ //mientras arreglo[i] sea menor a pivote while(arreglo[i]<pivote) i++; //mientras j sea mayor a pivote while(arreglo[j]>pivote) j--; //si i es menor o igual a j, los valores ya se cruzaron if(i<=j){ //variable temporal auxiliar para guardar valor de arreglo[j] aux=arreglo[j]; //intercambiamos los valores de arreglo[j] y arreglo[i] arreglo[j] = arreglo[i] arreglo[i] = aux // incrementamos y decrementamos i y j i++; j--; } }while(i<j); //si primero es menor a j llamamos la funcion nuevamente if(primero<j){ quicksort(primero,j); } //si ultimo es mayor que i llamamos la funcion nuevamente if(ultimo>i){ quicksort(i,ultimo); } }
Como utilizarlo
//arreglo a ordenar arreglo=[10,9,19,8,1,12,14,24,34,54,5,4,2,99,2,3,1,0]; //llamamos la función mandando 0 en el primer parametro //y mandando la longitud del arreglo -1 quicksort(0,(arreglo.length-1)); //imprimimos para ver el resultado alert(arreglo)