算法;归并

    // 注意返回 void
    public void mergeSortHelper(int[] arr, int l, int r){
        if(l >= r)  return;

        // 先分;神坑2:注意 m 归左边
        int m = (l + r) / 2;
        mergeSortHelper(arr, l, m);
        mergeSortHelper(arr, m + 1, r);
        // 后治
        merge(arr, l, m, r);
    }
    // 注意返回 void
    public void merge(int[] arr, int l, int m, int r){
        // 创建临时数组
        int[] arrTemp = new int[r - l + 1];
        int p = 0;
        // 创建双指针,边界条件
        int p1 = l, p2 = m + 1, end1 = m, end2 = r;

        // 双指针 while;都未遍历完,某个未遍历完
        while(p1 <= end1 || p2 <= end2){
            if(p1 <= end1 && p2 <= end2){
                if(arr[p1] <= arr[p2])      arrTemp[p++] = arr[p1++];
                else if(arr[p1] > arr[p2])  arrTemp[p++] = arr[p2++];
            }
            else if(p2 > end2)   arrTemp[p++] = arr[p1++];
            else if(p1 > end1)   arrTemp[p++] = arr[p2++];
            // 神坑1:必须加 else;第一个if完,p1已经++了,可能会继续进入第二个if
            // if(p2 > end2)   arrTemp[p++] = arr[p1++];
            // if(p1 > end1)   arrTemp[p++] = arr[p2++];
        }
        // 将临时数组移到 arr 上
        for(int i = l; i <= r; i++)  arr[i] = arrTemp[i - l];
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值