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
相关推荐
ForgeAI码匠6 小时前
ForgeAdmin|Spring Boot 3 后台框架的自动配置设计:少写配置,多做组合tongluowan0076 小时前
Redisson的参数及工作原理小L~~~6 小时前
基于贪心策略的混合遗传算法求解01背包问题洛水水6 小时前
【力扣100题】53.最长回文子串jieyucx6 小时前
Go 语言 sort 包详解:从基础排序到自定义排序(含底层原理+零基础看懂)仙俊红7 小时前
Integer\int对比,equals()\hashcode面试WiChP7 小时前
【V0.1B10】从零开始的2D游戏引擎开发之路云烟成雨TD7 小时前
Spring AI Alibaba 1.x 系列【60】检查点机制原理与全流程剖析ForgeAI码匠7 小时前
Maven 多模块项目如何避免越写越乱?Forge Admin 的模块边界实践z落落7 小时前
C# 数组 最终完整版全套笔记(一维+多维+交错+引用类型+对象数组)