「已注销」 2021-11-21 09:48 采纳率: 0%
浏览 14
已结题

Java归并法求逆序对(为什么help数组越界了)


public static void main(String[] args) {
        int[]arr=new int[]{4,3,2,1,5,7,6,5,2};
        System.out.println(process(arr,0,arr.length-1));
    }

    public  static int process(int[]arr,int L,int r){
        if(L==r)return 0;
        int M=L+(r-L)/2;
        return
        process(arr,L,M)+
        process(arr,M+1,r)+
        merge(arr,L,M,r);
    }


    public static int merge(int[]arr,int L,int M,int r){
        int[]help=new int[r-L+1];
        int p1=L,p2=M+1,res=0,i=0;
        while (p1<=M&&p2<=r){
            res+=arr[p1]>arr[p2]?1:0;
            help[i++]=arr[p1]<arr[p2]?arr[p1++]:arr[p2++];
        }
        while(p1<=M){
            help[i++]=arr[p1++];
        }
        while(p2<=r){
            help[i++]=arr[p2++];
        }
        for(int k=0;k<help.length;k++){
            arr[k+L]=help[i];
        }
        return res;
    }
}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月29日
    • 创建了问题 11月21日

    悬赏问题

    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 CSS实现渐隐虚线框
    • ¥15 有没有帮写代码做实验仿真的
    • ¥30 vmware exsi重置后登不上
    • ¥15 易盾点选的cb参数怎么解啊
    • ¥15 MATLAB运行显示错误,如何解决?
    • ¥15 c++头文件不能识别CDialog
    • ¥15 Excel发现不可读取的内容
    • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
    • ¥20 yolov5自定义Prune报错,如何解决?