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
相关推荐
囊中之锥.几秒前
机器学习算法详解:DBSCAN 聚类原理、实现流程与优缺点分析AlenTech11 分钟前
152. 乘积最大子数组 - 力扣(LeetCode)m0_7482495414 分钟前
Java 语言提供了八种基本类型【文123】移幻漂流19 分钟前
Kotlin 如何解决 Java 的核心痛点:现代语言特性的深度剖析leikooo21 分钟前
ShardingSphere 下更新分片键导致的失败问题分析与解决Piar1231sdafa22 分钟前
基于yolo13-C3k2-RVB的洗手步骤识别与检测系统实现_1a程序小傲23 分钟前
中国邮政Java面试被问:Netty的FastThreadLocal优化原理做科研的周师兄23 分钟前
【MATLAB 实战】|多波段栅格数据提取部分波段均值——批量处理(NoData 修正 + 地理信息保真)_后附完整代码jay神27 分钟前
基于Java的水果网上订购平台小北方城市网30 分钟前
SpringBoot 集成 MyBatis-Plus 实战(高效 CRUD 与复杂查询):简化数据库操作