归并排序(递归实现)

复制代码
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];
    }
}
相关推荐
JAVA面经实录9178 分钟前
IDEA 开发知识
java·intellij-idea·idea
于樱花森上飞舞12 分钟前
【Redis】哨兵详解
java·开发语言·数据库·redis
Navigator_Z14 分钟前
LeetCode //C - 1255. Maximum Score Words Formed by Letters
c语言·算法·leetcode
All for pursuit.18 分钟前
【栈-4】739.每日温度
数据结构·c++·算法·leetcode
2601_9538246125 分钟前
基于SSM的水果超市管理系统
java·tomcat·maven
guo_wen_qiang27 分钟前
springboot如何自定义一个启动器starter
java·spring boot·intellij-idea
许彰午31 分钟前
55-字典缓存与通知SPI
java·低代码·架构
captain37635 分钟前
HTTP(2)
java·网络·http·java-ee
徐子童37 分钟前
介绍MVCC机制
java·mysql·面试题·秋招·并发·mvcc
Wang's Blog38 分钟前
Java 项目实战: 外卖平台-启用禁用员工账号与Long精度丢失修复
java·服务器