Stackoverflow avec Quicksort implémentation Java

Avoir quelques problèmes de mise en œuvre de quicksort en java. Je reçois un stackoverflow d'erreur quand je lance ce programme et je ne suis pas sûr de savoir exactement pourquoi. Si quelqu'un peut le point sur l'erreur, ce serait formidable.

si est l'indice de départ. l'ie est la fin de l'index.

public static void qsort(int[] a, int si, int ei){

    //base case
    if(ei<=si || si>=ei){}


    else{ 
        int pivot = a[si]; 
        int length = ei - si + 1; 
        int i = si+1; int tmp; 

        //partition array 
        for(int j = si+1; j<length; j++){
            if(pivot > a[j]){
                tmp = a[j]; 
                a[j] = a[i]; 
                a[i] = tmp; 

                i++; 
            }
        }

        //put pivot in right position
        a[si] = a[i-1]; 
        a[i-1] = pivot; 

        //call qsort on right and left sides of pivot
        qsort(a, 0, i-2); 
        qsort(a, i, a.length-1); 
    }
}
La ligne qui lance l'exception?
les deux dernières lignes. les deux qui appellent quicksort sur les côtés droit et gauche de pivot.
Le cas de base semble assez standard, si la subarray taille est de 0 ou 1.
Le côté droit et gauche de la condition ou l'air d'être une seule et même chose tho. ei <= si est logiquement identique à si >= ei.
Nous montrer la callsite.

OriginalL'auteur Shaayaan Sayed | 2013-02-16