Advertisement
Aldin-SXR

MergeSort.java

Mar 31st, 2020
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.30 KB | None | 0 0
  1. package ds.merge.sort.recursive;
  2.  
  3. public class MergeSort extends AbstractSort {
  4.    
  5.     /* Merge sort algorithm (public invocation) */
  6.     public static void sort(int[] elements) {
  7.         int[] aux = new int[elements.length];           // 1
  8.         sort(elements, aux, 0, elements.length - 1);    // 2
  9.     }
  10.    
  11.     /* Recursive merge sort logic */
  12.     private static void sort(int[] elements, int[] aux, int low, int high) {
  13.         if (high <= low) {                              // 1
  14.             return;                                     // 1
  15.         }
  16.        
  17.         int mid = low + (high - low) / 2;               // 2
  18.         sort(elements, aux, low, mid);                  // 3
  19.         sort(elements, aux, mid + 1, high);             // 3
  20.         merge(elements, aux, low, mid, high);           // 4
  21.     }
  22.    
  23.     /* Merge the two sorted sub-arrays into a larger sorted (sub)array */
  24.     private static void merge(int[] elements, int[] aux, int low, int mid, int high) {
  25.        
  26.         for (int k = low; k <= high; k++) {             // 1
  27.             aux[k] = elements[k];                       // 1
  28.         }          
  29.        
  30.         int i = low;                                    // 2
  31.         int j = mid + 1;                                // 2
  32.         for (int k = low; k <= high; k++) {             // 3
  33.             if (i > mid) {                              // 4
  34.                 elements[k] = aux[j++];                 // 4
  35.             } else if (j > high) {                      // 5
  36.                 elements[k] = aux[i++];                 // 5
  37.             } else if (less(aux[j], aux[i])) {          // 6
  38.                 elements[k] = aux[j++];                 // 6
  39.             } else {                                    // 7
  40.                 elements[k] = aux[i++];                 // 7
  41.             }
  42.         }
  43.     }
  44. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement