Está en la página 1de 2

QuickSort

Los Ordenadores resuelven desde sus inicios una tarea básica pero muy importante que es
el ordenamiento, algoritmos como Burbuja, Selección o Inserción directa fueron desarrollados,
pero eran muy lentos, ya que son de orden cuadrático. El ordenamiento rápido  o
Quicksort creado en 1960 por Charles Hoare, Inglés, nativo de Sri Lanka, desarrolló el algoritmo de
basado en la idea de elegir un elemento pivote, posteriormente ordenar los elementos de la lista
en base a ese pivote, finalmente realizar dos llamadas recursivas.
En la práctica, es el algoritmo de ordenación más rápido conocido, su tiempo de ejecución
promedio es O(n log (n)). La velocidad de ejecución del algoritmo depende en gran medida de
cómo se elija el pivote.

void Quicksort(int v[10000], int ini, int tam)


{ int pivote;
if(ini < tam)
{
pivote=ini;//PRIMER ELEMENTO DE LA LISTA
particion(v, ini, tam,&pivote); // Pone el PIVOTE EN SU LUGAR
Quicksort(v, ini, pivote-1);
Quicksort(v, pivote+1, tam);
}
}

La idea de partición es que deja todos los elementos menores que el pivote a un lado y todos los
mayores al otro, el pivote debe estar en su lugar al terminar el algoritmo. Además lo debe ejecutar
en una sola pasada de la lista, por lo tanto pertenece al Orden O(N).

void particion(int v[10000], int ini, int tam, int *pivote)


{
int j,pri_may;
int valor_pivote, temp;

valor_pivote = v[ini];
pri_may = ini+1;
for (j=ini+1; j<=tam; j++){
if (v[j] < valor_pivote){//Si el número es menor al pivote intercambia con un mayor
temp=v[j];
v[j]=v[pri_may];
v[pri_may]=temp;
pri_may++;
}
}
temp=v[ini];
v[ini]=v[pri_may-1];
v[pri_may-1]=temp;te=pri_may-1;
}

También podría gustarte