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
相关推荐
xcl09259 小时前
商超智能运营实战:数据驱动提升门店效率与体验指南Flynt11 小时前
OpenJDK禁AI代码半年了,现在执行得怎么样?答案是:全靠自觉古法安卓16 小时前
Android-日志系统源码解析地平线开发者16 小时前
【模型轻量化专题】衡量模型轻量性的指标小夏coding18 小时前
从"一把梭"到"精妙拆解" —— 滑动窗口计时框架的设计演进MacroZheng19 小时前
同事问我:"Claude Code经常失忆,不怕它把项目搞炸?",我:"怕,三个Markdown文件给它装个永不丢失的外置大脑!"学习星球20 小时前
OFDM技术精讲:正交性推导、循环前缀原理与80行Python链路仿真(附实测数据)十年Java程序媛20 小时前
深度实战:JDK21 虚拟线程 + HikariCP 生产正确配比、坑点、监控全套xiaoqiMikko20 小时前
有人在搜一个不存在的 Tomcat 版本用户3126874877201 天前
ConcurrentHashMap 怎么保证线程安全?从分段锁到 CAS+synchronized