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
相关推荐
Kx_Triumphs3 分钟前
计算几何-旋转卡壳两种实现方案(兼P1452题解代码游侠7 分钟前
学习笔记——Linux字符设备驱动开发小王不爱笑13212 分钟前
LangChain4J 整合多 AI 模型核心实现步骤西凉的悲伤12 分钟前
spring-boot-starter-validation使用注解进行参数校验LucDelton25 分钟前
Java 读取无限量文件读取的思路夹锌饼干35 分钟前
mysql死锁排查流程--(处理mysql阻塞问题)小信丶44 分钟前
@EnableTransactionManagement注解介绍、应用场景和示例代码m0_736919101 小时前
C++中的享元模式变体To Be Clean Coder1 小时前
【Spring源码】createBean如何寻找构造器(四)——类型转换与匹配权重罗湖老棍子1 小时前
【 例 1】石子合并(信息学奥赛一本通- P1569)