归并排序(递归实现)

复制代码
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];
    }
}
相关推荐
随遇而安zx11 分钟前
【多线程】---ConcurrentHashMap 源码解析
java·多线程·并发
luj_176815 分钟前
一线一区一变破解人盯人防守密码
开发语言·网络·c++·经验分享·算法
不才不才不不才18 分钟前
Spring 源码系列(27): @Transactional 七大失效场景与源码归因
java·后端·spring
随遇而安zx21 分钟前
【多线程】---线程池 ThreadPoolExecutor 原理与调优
java·线程池·多线程
抠脚小弟24 分钟前
WebSocketServer 使用详解:从入门到实战
java·spring·websocketserver
随便做点啥29 分钟前
32卡64G-910B4-16后端集群部署报告
java·大数据·运维
Wang's Blog38 分钟前
Java框架快速入门: Spring Security+OAuth2之字段验证与自定义验证注解实战
java·算法·spring
CodeStats38 分钟前
【Java 类加载器】Java 类加载器完整体系深度拆解(上):从 JVM 启动到双亲委派模型
java·开发语言·jvm·classloader·双亲委派
带多刺的玫瑰43 分钟前
Leecode#29刷题之两数相除
java·python·算法
smj2302_796826521 小时前
解决leetcode第4017题数组中的峰值II
python·算法·leetcode