Metodo QuickSort

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);