Se basa en el paradigma de divide y venceras, pero usa esta tecnica en forma algo contraria por que todo el trabajo duro se hace antes de las llamadas recursivas.
El ordenamiento rapido ordena una secuencia s en subsecuencias, se hace recursion para ordenar cada subsecuencia y a continuacion se combinan las secuencias ordenada sin mediante una simple concatenacion.
CODIGO DE QUICK-SORT (enteros y flotantes)
ENTEROS
public class quicksort {
public static void qsort(Comparable [] c, int inicio, int fin) {
if(fin<=inicio) return;
Comparable comp=c[inicio];
int i=inicio, j=fin+1;
for(;;){
do i++;while(i
if (j<=i) break;
Comparable tmp=c[i];
c[i]=c[j];
c[j]=tmp;
}
c[inicio]=c[j];
c[j]=comp;
qsort(c, inicio, j-1);
qsort(c, j+1, fin);
}
public static void qsort(Comparable[] c){
qsort(c, 0, c.length-1);
}
public static void main(String[] args){
int i;
Integer[] arr=new Integer [100];
System.out.println("Elementos aleatorios:");
for(i=0; i
System.out.print(arr[i]+"");
}
quicksort.qsort(arr);
System.out.println("\nelementos ordenados:");
for(i=0; i
}
}
No hay comentarios:
Publicar un comentario