找不到问题出在哪,请代码佬指路


public class txt1 {
    public static int[] Mepo(int p,int r) {
        int[] arr=new int[r];
        int i=0;
        while(i<=r-1) {
            arr[i]=r-i;
            i++;
        }
        int q=(r-p)/2;
        if(p==r) {
            return new int[] {arr[q]};
        }
        int[] arr3=new int[r+1];
        int arr1[]=Mepo(p,q);
        int arr2[]=Mepo(q+1,r);
        i=1;
        int j=1;
        int t=1;
        while(i<=arr1.length && j<=arr2.length) {
        if(arr1[i]<=arr2[j]) {
            arr3[t]=arr1[i];
            t++;
            i++;
        }else {
            arr3[t]=arr2[j];
            t++;
            j++;
        }
        }
        while(i<=arr1.length) {
            arr3[t]=arr1[i];
        }
        while(j<=arr2.length) {
            arr3[t]=arr2[i];
        }
        return arr3;
    }
        
    public static void main(String[] args) {
         int[] result=Mepo(1,4);
        for(int x:result) {
            System.out.println(x);
        }
    }
}

搞了半天的归并排序,没有弄懂为什么这段代码无法运行,有点参考网上的百度百科但是也有自己的思路,是溢出问题吗?可我看不出来

debug一下,很容易看出原因的,你的 Mepo 方法递归到最后 r = -1了,然后去创建 int数组的时候size是不可以为-1的所以报了NegativeArraySizeException这个异常

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^