2017-10-09 4 views
0

La méthode mergeSort(int[]) n'est pas définie pour la fusion de type. C'est l'erreur à laquelle je suis confronté. Quelqu'un peut-il s'il vous plaît signaler ma faute? Peut-être que je suis en train de faire une erreur de syntaxe, s'il vous plaît signaler l'erreur im faire.J'essayais de créer un tri de fusion mais en finissant avec une erreur

public class merge { 
    public static mergeSort(int[] a) { 
     int n = a.length; 
     if (n < 2) { 
      return(a[]); 
     } 
     int mid = n/2; 
     int left[] = new int[mid]; 
     int left[] = new int[n - mid]; 

     for (int i = 0; i < mid; i++) { 
      left[i] = a[i]; 
     } 

     for (int i = mid; i < n; i++) { 
      right[i - mid] = a[i]; 
     } 

     mergeSort(left[]); 
     mergeSort(right[]); 
     mmerge(left[], right[], A); 
    } 

    public static void mmerge(int[] l, int[] r, int[] array) { 
     int len1 = l.length(); 
     int len2 = r.length(); 
     int i = 0; 
     int j = 0; 
     int k = 0; 
     while (i < len1 && j < len2) { 
      if (l[i] <= r[j]) { 
       array[k]=l[i]; 
       k++; 
       i++; 
      } else { 
       array[k] = r[j]; 
       k++; 
       j++; 
      } 
     } 
     while (i < len1) { 
      array[k] = l[i]; 
      k++; 
      i++; 
     } 
     while (j < len2) { 
      array[k] = r[j]; 
      k++; 
      j++; 
     } 
    } 

    public static void main(String args[]) { 
     int[] arr = { 4, 6, 2, 9, 1, 7, 3 }; 
     mergeSort(arr); 

     for (int p = 0; p < arr.length; p++) { 
      System.out.print(arr[p]+" "); 
     } 
    } 
} 
+1

Il aide à faire une recherche de votre erreur spécifique, le premier problème est que la fonction mergesort ne dispose pas d'une valeur de retour. Comme cette configuration est annulée, la commande de retour de mergesort ne devrait avoir aucune valeur (deuxième problème). Ensuite, les appels de mergesort suivants sont de type incompatibles. – user1442498

Répondre

0

Essayez cette

public class merge { 
    public static void mergeSort(int[] a) { 
     int n=a.length; 
     if(n<2) { 
      return; 
     } 
     int mid=n/2; 
     int left[]=new int[mid]; 
     int right[]=new int[n-mid]; 

     for (int i=0;i<mid;i++) { 
      left[i]=a[i]; 
     } 

     for (int i=mid;i<n;i++) { 
      right[i-mid]=a[i]; 
     } 

     mergeSort(left); 
     mergeSort(right); 
     mmerge(left,right,a); 
    } 

    public static void mmerge(int[] l,int[] r,int[] array) { 
     int len1=l.length; 
     int len2=r.length; 
     int i=0; 
     int j=0; 
     int k=0; 
     while(i<len1 && j<len2) { 
      if(l[i]<=r[j]) { 
       array[k]=l[i]; 
       k++; 
       i++; 
      }else { 
       array[k]=r[j]; 
       k++; 
       j++; 
      } 
     } 
     while(i<len1) { 
      array[k]=l[i]; 
      k++; 
      i++; 
     } 
     while(j<len2) { 
      array[k]=r[j]; 
      k++; 
      j++; 
     } 
    } 

    public static void main(String args[]) { 

     int[] arr={4,6,2,9,1,7,3}; 
     mergeSort(arr); 

     for(int p=0;p<arr.length;p++) { 
      System.out.print(arr[p]+" "); 
     } 

    } 
}