Advertisement
Vankata17

MergeSort_Methods

Dec 11th, 2020
606
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.44 KB | None | 0 0
  1. package com.company;
  2.  
  3. public class MergeSort_Methods {
  4.  
  5.     public static void Divide(int[] ARR, int l, int r) {
  6.  
  7.         if (l < r) {
  8.             int m = (l + r) / 2; // sredna tochka
  9.  
  10.             Divide(ARR, l, m);// sort left
  11.             Divide(ARR, m + 1, r);// sort right
  12.             CompareAndMerge(ARR, l, m, r);
  13.         }
  14.     }
  15.  
  16.     private static void CompareAndMerge(int[] arr, int l, int m, int r) {
  17.         int leftArrLength = m - l + 1;
  18.         int rightArrLength = r - m;
  19.  
  20.         int[] L = new int[leftArrLength];
  21.         int[] R = new int[rightArrLength];
  22.  
  23.         for (int i = 0; i < leftArrLength; i++) {
  24.             L[i] = arr[l + i];
  25.  
  26.         }
  27.         for (int j = 0; j < rightArrLength; j++) {
  28.             R[j] = arr[m + 1 + j];
  29.         }
  30.         //sravnenie i mergvane na pomoshnite masivi
  31.         int i = 0;
  32.         int j = 0;
  33.         int k = l;
  34. //obhojda i svalq elementite
  35.         while (i < leftArrLength && j < rightArrLength) {
  36.             if (L[i] <= R[j]) {
  37.                 arr[k] = L[i];
  38.                 i++;
  39.             } else {
  40.                 arr[k] = R[j];
  41.                 j++;
  42.             }
  43.             k++;
  44.         }
  45.  
  46.         while (i < leftArrLength) {
  47.             arr[k] = L[i];
  48.             i++;
  49.             k++;
  50.         }
  51.         while (j < rightArrLength) {//posledniq element go svalq prinuditelno
  52.             arr[k] = R[j];
  53.             j++;
  54.             k++;
  55.         }
  56.     }
  57.  
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement