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];
}
}
归并排序(递归实现)
听风客12024-07-17 20:30
相关推荐
To_OC2 小时前
LC 128 最长连续序列:别上来就排序,O (n) 解法才是这题的灵魂人活一口气7 小时前
Spring Boot与AIGC的完美结合:从零搭建智能内容生成平台像我这样帅的人丶你还9 小时前
Java 后端详解(三):全局异常处理与 JPA 数据库映射NE_STOP9 小时前
vibe Coding -- 小项目实战未秃头的程序猿15 小时前
Java 26正式发布!这3个新特性,让代码量直接减半用户2986985301415 小时前
Word 文档文本查找与替换的 Java 实现方案阿哉15 小时前
Nacos 服务发现源码:藏在背后的两套事件机制,90%的人只讲了一半05Kevin15 小时前
lk每日冒险题--数据结构6.27咖啡八杯16 小时前
GoF设计模式——命令模式