Advertisement
tdudzik

Untitled

Apr 28th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.46 KB | None | 0 0
  1. package io.github.tdudzik.algorithms.sorting;
  2.  
  3. import java.util.Arrays;
  4.  
  5. public class MergeSort implements SortingAlgorithm {
  6.  
  7.     public static void main(String[] args) {
  8.         int[] elements = new int[] {1, 3, 2, 4};
  9.         mergeSort(elements, 0, 3);
  10.         System.out.println(Arrays.toString(elements));
  11.     }
  12.  
  13.     @Override
  14.     public void sort(int[] elements) {
  15.  
  16.     }
  17.  
  18.     private static void mergeSort(int[] elements, int p, int r) {
  19.         if (p < r) {
  20.             int q = (p + r) / 2;
  21.             mergeSort(elements, p, q);
  22.             mergeSort(elements, q + 1, r);
  23.             merge(elements, p, q, r);
  24.         }
  25.     }
  26.  
  27.     private static void merge(int[] elements, int p, int q, int r) {
  28.         int n1 = q - p + 1;
  29.         int n2 = r - q;
  30.  
  31.         int[] left = new int[n1];
  32.         for (int i = 0; i < n1; i++) {
  33.             left[i] = elements[p + i];
  34.         }
  35.  
  36.         int[] right = new int[n2];
  37.         for (int i = 0; i < n2; i++) {
  38.             right[i] = elements[q + i + 1];
  39.         }
  40.  
  41.         int i = 0;
  42.         int j = 0;
  43.         int k = 0;
  44.         while (i < n1 && j < n2) {
  45.             if (left[i] <= right[j]) {
  46.                 elements[k++] = left[i++];
  47.             } else {
  48.                 elements[k++] = right[j++];
  49.             }
  50.         }
  51.  
  52.         while (i < n1) {
  53.             elements[k++] = left[i++];
  54.         }
  55.  
  56.         while (j < n2) {
  57.             elements[k++] = right[j++];
  58.         }
  59.     }
  60.  
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement