#include <stdio.h>
#include <stdlib.h>
void quicksort(int[],int);
int main(){
static int lista[] = {9,3,88,5,13,10,27,6,18,3};
int n_elementos = sizeof(lista)/sizeof(int);
register i;
quicksort(lista, n_elementos);
printf("\nLista ordenada: \n");
for(i=0; i<n_elementos; i++){
printf("%6d", lista[i]);
}
system("pause");
return 0;
}
// Quicksort
void qs(int[], int, int);
void quicksort(int lista[], int n_elementos){
qs(lista,0,n_elementos-1);
}
// Funcion recursiva
void qs(int lista[], int inf, int sup){
register izq, der;
int mitad, x;
izq = inf;
der = sup;
mitad= lista[(izq+der)/2];
do{
while(lista[izq]<mitad && izq < sup){
izq++;
}
while(mitad<lista[der] && der>inf){
der--;
if(izq<=der){
x = lista[izq];
lista[izq] = lista[der];
lista[der] = x;
izq++;
der--;
}
}
}while(izq<=der);
if(inf<der){
qs(lista,inf,der);
}
if(izq<sup){
qs(lista,izq,sup);
}
}
Recursión: Quicksort recursivo
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario