Galera, estou tentando implementar o Quick Sort Recursivo em Java, mas ele não está organizando os valores corretamente, alguém pode testar ae e me falar onde estou errando???
Já revi o código umas 10 vezes e até agora nao sei oq ue tá de errado... testando vcs vao ver o erro...
vlw!import java.util.Scanner;
public class QuickSort
{
static int a[] = new int[50];
public static void sort( int e, int d )
{
int i = e;
int j = d;
int aux;
int pivo = a[ ( i + j ) / 2 ];
//System.out.println(String.format("%d",i+j/2));
do
{
//System.out.println("i:"+i);
//System.out.println("j:"+j);
while( a[i] < pivo )
{
++i;
}
while( pivo < a[j] )
{
--j;
}
if( i <= j )
{
aux = a[i];
a[i] = a[j];
a[j] = aux;
++i;
--j;
} //fim de if
}
while( j > i );
/*for( int k = 0; k < d; k++ )
{
System.out.println( "\"a["+k+"]"+a[k]+"\"" );
}
System.out.println("--X--X--");*/
if( e < j )
sort(e,j);
if( i < d )
sort(i,d);
}
public static void main(String[] args)
{
Scanner scanner = new Scanner( System.in );
System.out.print("Número de elementos: ");
int n = scanner.nextInt();
for( int k = 0; k < n; k++ )
{
a[k] = scanner.nextInt();
}
/*for( int k = 0; k < n; k++ )
{
System.out.println( "\""+a[k]+"\"" );
}*/
sort(0,n);
System.out.println("Ordenados:");
for( int k = 0; k < n; k++ )
{
System.out.println( a[k] );
}
}
}