Fusion De Tri Java

Je suis en train de faire une fusion méthode de tri, mais il continue à donner le mauvais sortes. Où dois-je modifier pour le rendre réellement trier le tableau? Quelle partie du code doit être différente? Je vous remercie pour votre temps.

  public static void mergeSort(int[] array, int left,  int lHigh, int right, int rHigh) {  
        int elements = (rHigh - lHigh +1) ;  
        int[] temp = new int[elements];
        int num = left;
      while ((left <= lHigh) && (right <= rHigh)){
       if (a[left] <= array[right]) {
          temp[num] = array[left];
          left++;
        }
        else {
          temp[num] = array[right];
          right++;
        }
       num++;   
      }
     while (left <= right){
        temp[num] = array[left]; //I'm getting an exception here, and is it because of the num???
        left += 1;
        num += 1;  
     }  
     while (right <= rHigh) {
        temp[num] = array[right];
        right += 1;
        num += 1;  
     }  
     for (int i=0; i < elements; i++){
       array[rHigh] = temp[rHigh];
       rHigh -= 1;   
     }

EDIT: maintenant, le mergeSort n'a pas vraiment de trier les nombres, quelqu'un peut-il me dire où il est spécifiquement? surtout quand j'ai l'impression que le "Test de la fusion de tri".

Umm.. êtes-vous essayer de faire fonctionner correctement ou tout simplement compiler?!
dans merge(), le premier appel à la fusion doit être du début à la centre, pas du début à la fin.
dans merge(), l'appel à mergeSort devrait être mergeSort(newArray, start,center, center+1,end);
Désolé, mon erreur, mais quand je l'appelle merge() la mergeSort donne le mauvais sortes, c'est à cause de la façon dont j'ai copié le tableau?
Voir mon édités réponse. Vous êtes certainement sur la bonne voie, vous mergeSort() de la fonction, doit cependant être complètement ré-écrit.

OriginalL'auteur Sam | 2009-11-14