Denis_Hristov

MergeSortMethods

Dec 16th, 2020 (edited)
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.39 KB | None | 0 0
  1. public class MergeSortMethods {
  2.  
  3.     public static void divide(int[] arr, int l, int r) {
  4.         if (l < r) {
  5.             int m = (l + r) / 2;
  6.  
  7.             divide(arr, l, m);
  8.             divide(arr, m + 1, r);
  9.  
  10.             SortMerge(arr, l, m, r);
  11.  
  12.         }
  13.     }
  14.  
  15.  
  16.  
  17.         public static void SortMerge(int[] arr, int l, int m, int r) {
  18.             int LeftHalf = m - l + 1;
  19.             int RightHalf = r - l;
  20.  
  21.             int[] L = new int[LeftHalf];
  22.             int[] R = new int[RightHalf];
  23.  
  24.  
  25.             for (int i = 0; i < LeftHalf; i++) {
  26.                 L[i] = arr[l + i];
  27.                 i++;
  28.             }
  29.  
  30.             for (int j = 0; j < RightHalf; j++) {
  31.                 R[j] = arr[m + 1 + j];
  32.                 j++;
  33.             }
  34.  
  35.  
  36.             int i = 0;
  37.             int j = 0;
  38.  
  39.             int k = l;
  40.  
  41.             while (i < LeftHalf && j < RightHalf) {
  42.                 if (L[i] <= R[j]) {
  43.                     arr[k] = L[i];
  44.                     i++;
  45.                 } else {
  46.                     arr[k] = R[j];
  47.                     j++;
  48.                 }
  49.                 k++;
  50.             }
  51.  
  52.             while (i < LeftHalf) {
  53.                 arr[k] = L[i];
  54.                 i++;
  55.                 k++;
  56.             }
  57.  
  58.             while (j < RightHalf) {
  59.                 arr[k] = R[j];
  60.                 j++;
  61.                 k++;
  62.             }
  63.         }
  64. }
  65.  
  66.  
Add Comment
Please, Sign In to add comment