【问题标题】:I was trying to build a merge sort but ending up with an error我试图建立一个合并排序,但最终出现错误
【发布时间】:2017-10-09 23:45:50
【问题描述】:

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

【问题讨论】:

  • 它有助于搜索您的具体错误,第一个问题是 mergesort 函数没有返回值。由于这是设置为无效的,mergesort 的返回命令不应该有任何值(第二个问题)。那么后续的归并排序调用是类型不匹配的。

标签: sorting merge


【解决方案1】:

试试这个

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

    }
}

【讨论】:

    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2020-06-11
    相关资源
    最近更新 更多