归并排序(递归实现)

[复制链接]
发表于 2026-2-24 02:44:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
  1. public static void mergeSort1(int[] arr){
  2.     if(arr ==null || arr.length <2){
  3.         return;
  4.     }
  5.     process(arr, 0 , arr.length-1);
  6. }
  7. public static void process(int[] arr ,int L ,int R){
  8.     if(L ==R){
  9.         return;
  10.     }
  11.     int mid = L +((R-L)>>1);
  12.     process(arr , L , mid);
  13.     process(arr , mid+1 , R);
  14.     merge(arr , L , mid ,R);
  15. }
  16. public static void merge(int[] arr , int L  , int M , int R){
  17.     int[] help = new int[R-L+1];
  18.     int i =0;
  19.     int p1 = L;
  20.     int p2 = M+1;
  21.     while(p1 <= M && p2 <= R){
  22.         help[i++] = arr[p1] <= arr[p2] ? arr[p1++] :arr[p2++];
  23.     }
  24.     while (p1 <= M){
  25.         help[i++] = arr[p1++];;
  26.     }
  27.     while (p2 <= R){
  28.         help[i++] = arr[p2++];;
  29.     }
  30.     for (i = 0; i < help.length; i++) {
  31.         arr[L+i] = help[i];
  32.     }
  33. }
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表