Metodo QuickSort

3 respostas
O

E ae galera… eu implementei o codigo do metodo de ordenacao QuickSort, mas eu deu um erro de explosao da JVM (Exception in thread “main” java.lang.StackOverflowError)… eu analizei o codigo e ta igual… como eu faço pra corrigir esse erro. Obrigado ,…

//Metodo Particao
	public void Particao(int[] nume,int i, int f, int k) {
		int chave = nume[i];
		boolean esq = true;
		
		while (i < f) {
			if (esq == true) {
				comparacoes++;
				if (nume[f] < chave) {
					trocas++;
					nume[i] = nume[f];
					i++;
					esq = false;
				}
				else
					f = f - 1;
			}
			else {
				comparacoes++;
				if (nume[i] > chave) {
					trocas++;
					nume[f] = nume[i];
					f--;
					esq = true;
				}
				else
					i++;
			}
			
		}
		k = i;
		nume[k] = chave;
	}
	
	//Procedimento QuickSort
	public void QuickSort(int[] nume, int i, int f){
		int inicio = i;
		int fim = f;
		int k  = nume.length / 2;
		if (fim > inicio) {
			Particao(nume, inicio, fim, k);
			QuickSort(nume, inicio, k - 1);
			QuickSort(nume, k + 1, fim);
			
		}
	}

public class Executar extends InserirArray {
	
private static final int tamanho = 5;
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] outroArray3 = new int[tamanho];
		outroArray3 = numeros.getArray(nu);
		int i = 0;
		int f = outroArray3.length - 1;
		
		
		numeros.QuickSort(outroArray3, i, f);
		System.out.println("O metodo QuickSort teve : " + numeros.comparacoes + " numeros de comparacoes");
		System.out.println("O metodo QuickSort teve : " + numeros.trocas + " numeros de trocas");

3 Respostas

BrunoBastosPJ

http://www.portaljava.com.br/home/modules.php?name=Content&pa=showpage&pid=56

O

Mas Bruno esse codigo q eu peguei de um livro q estava em pascal e que eu passei pra java ta errado? Oq ta errado? Obrigado!!

BrunoBastosPJ

vamos la

a variável comparacoes não foi declarada, a variável trocas também não.

a classe InserirArray não existe a variável numeros não foi declarada e a variável nu também não foi declarada

Criado 1 de outubro de 2006
Ultima resposta 3 de out. de 2006
Respostas 3
Participantes 2