归并排序(递归实现)

复制代码
public static void mergeSort1(int[] arr){
    if(arr ==null || arr.length <2){
        return;
    }

    process(arr, 0 , arr.length-1);
}

public static void process(int[] arr ,int L ,int R){
    if(L ==R){
        return;
    }
    int mid = L +((R-L)>>1);
    process(arr , L , mid);
    process(arr , mid+1 , R);
    merge(arr , L , mid ,R);
}

public static void merge(int[] arr , int L  , int M , int R){
    int[] help = new int[R-L+1];
    int i =0;
    int p1 = L;
    int p2 = M+1;
    while(p1 <= M && p2 <= R){
        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 (i = 0; i < help.length; i++) {
        arr[L+i] = help[i];
    }
}
相关推荐
Flynt28 分钟前
把公司项目迁到 Spring Boot 4.0:编译通过只是开始
java·spring boot·后端
2601_9657422234 分钟前
全媒体运营与短视频代运营,两者有什么区别?
大数据·数据结构·人工智能·算法·ai·媒体
Tangyuewei1 小时前
给老 Spring 项目装个 AI Agent
java·人工智能·spring
她的男孩1 小时前
多租户和数据权限怎么共存?扒完拦截器注册链路,我找到 4 个隐蔽的坑
java·后端·架构
wordbaby2 小时前
混合检索:两全其美的艺术
人工智能·算法
小溪学编程2 小时前
Java BufferedReader 详解:从基础用法到性能优化
java·python·性能优化
彧azz2 小时前
数据结构:关于图的学习
c语言·数据结构·笔记·学习·算法
HZero.chen2 小时前
Java 匿名类简介
java·匿名类
热心网友俣先生2 小时前
A题-药材的烘干问题-题意逐句翻译
算法·数学建模
用户3126874877202 小时前
Java 泛型擦除到底擦掉了什么?类型安全与桥接方法深度拆解
java