2017-10-09 1 views
0

Die Methode ist für den Typ merge undefined. Dies ist der Fehler, vor dem ich stehe. Kann jemand bitte meine Schuld angeben? Könnte sein, dass ich einen Syntaxfehler mache, bitte zeigen Sie den Fehler, den ich mache.Ich habe versucht, eine Merge-Sortierung zu erstellen, aber am Ende mit einem Fehler

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

Es eine Suche nach Ihren spezifischen Fehler zu tun, hilft, das erste Problem ist, dass die mergesort Funktion hat keinen Rückgabewert. Da diese Einstellung ungültig ist, sollte der Rückgabebefehl von mergesort keinen Wert haben (zweites Problem). Dann sind die nachfolgenden Mergesort-Aufrufe nicht übereinstimmend. – user1442498

Antwort

0

Versuchen Sie, diese

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]+" "); 
     } 

    } 
} 
Verwandte Themen