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);
}
}
// metodo main.
public class Executar extends InserirArray {
private static final int tamanho = 5;
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] nu = new int[tamanho];
Numeros numeros = new Numeros();
numeros.addArray(nu);
int[] outroArray3 = new int[tamanho];
outroArray3 = numeros.getArray(nu);
int i = 0;
int f = outroArray3.length - 1;
numeros.QuickSort(outroArray3, i, f);