归并排序(递归实现)

复制代码
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];
    }
}
相关推荐
..Cherry..11 小时前
Etcd详解(raft算法保证强一致性)
数据库·算法·etcd
拾荒的小海螺12 小时前
JAVA:Spring Boot3 新特性解析的技术指南
java·开发语言·spring boot
商汤万象开发者12 小时前
LazyLLM教程 | 第13讲:RAG+多模态:图片、表格通吃的问答系统
人工智能·科技·算法·开源·多模态
Lee_yayayayaya12 小时前
本原多项式产生m序列的原理
算法
暹罗软件开发12 小时前
快速搭建分布式链路追踪系统:SkyWalking全攻略
java·skywalking
.格子衫.12 小时前
Maven中的配置
java·maven
L.EscaRC13 小时前
Spring Boot 自定义组件深度解析
java·spring boot·后端
pengzhuofan13 小时前
IntelliJ IDEA 常用快捷键
java·ide·intellij-idea
蒙奇D索大13 小时前
【算法】递归的艺术:从本质思想到递归树,深入剖析算法的性能权衡
经验分享·笔记·算法·改行学it