Quick Sort Recursivo, onde estou errando?

0 respostas
adrianostanley

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] &lt pivo )
			{
				++i;
			}
			while( pivo &lt a[j] )
			{
				--j;
			}
			if( i &lt= j )
			{
				aux = a[i];
				a[i] = a[j];
				a[j] = aux;
				++i;
				--j;
			} //fim de if
		}
		while( j &gt i );
		
		/*for( int k = 0; k &lt d; k++ )
		{
			System.out.println( "\"a["+k+"]"+a[k]+"\"" );
		}
		
		System.out.println("--X--X--");*/
		
		if( e &lt j )
			sort(e,j);
		
		if( i &lt 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 &lt n; k++ )
		{
			a[k] = scanner.nextInt();
		}
		
		/*for( int k = 0; k &lt n; k++ )
		{
			System.out.println( "\""+a[k]+"\"" );
		}*/
		
		sort(0,n);
		
		System.out.println("Ordenados:");
		
		for( int k = 0; k &lt n; k++ )
		{
			System.out.println( a[k] );
		}
	}
}
Criado 21 de agosto de 2006
Respostas 0
Participantes 1