2017-10-09 55 views
0

對於類型合併,未定義方法mergeSort(int[])。這是我面臨的錯誤。任何人都可以指出我的錯嗎?可能是我犯了一個語法錯誤,請指出我正在犯的錯誤。我正嘗試構建合併排序,但以錯誤結尾

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

它有助於您的特定錯誤做搜索,第一個問題是,歸併功能沒有返回值。由於這個設置是無效的,mergesort的返回命令不應該有任何值(第二個問題)。然後後續的mergesort調用類型不匹配。 – user1442498

回答

0

試試這個

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

    } 
} 
相關問題