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
相关推荐
徐小夕9 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核Ai拆代码的曹操9 小时前
Spring 事务 REQUIRES_NEW 嵌套调用:连接池翻倍的秘密动恰客流统计10 小时前
ReID边缘计算视觉统计:餐饮店客流增长的数字化破局路径可编程芯片开发10 小时前
UPFC统一潮流控制器的simulink建模与仿真Ivanqhz11 小时前
Rust &‘static str浅析小小仙子11 小时前
矢量网络分析仪如何测试S参数的?中微极客12 小时前
降维算法75倍加速:从PCA到稀疏字典学习的工程实践storyseek13 小时前
前缀和实现Kogge-Stone算法元Y亨H13 小时前
开发者必须掌握的十大核心算法