Advertisement
Vasilena

ТЕМА 10

Dec 18th, 2020 (edited)
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.09 KB | None | 0 0
  1. //10.12.2020 Classwork MergeSort//
  2.  
  3. import java.util.Scanner;
  4. import java.util.Arrays;
  5.  
  6. public class MergeSort {
  7.  
  8.     public static void Divide(int[] ARR, int l, int r){
  9.         if(l < r){
  10.             int m = (l + r)/2;//middle point//
  11.             Divide(ARR, l,m); //sort left array//
  12.             Divide(ARR, m+1, r); //sort right array//
  13.  
  14.             CompareAndMerge(ARR, l, m, r);//merge the arrays//
  15.         }
  16.     }//end of Divide//
  17.  
  18.     private static void CompareAndMerge(int[] arr, int l, int m, int r){
  19.         int LeftArrLength = m - l + 1;
  20.         int RightArrLength = r - m; //!!!//
  21.  
  22.         int[] L = new int[LeftArrLength];
  23.         int[] R = new int[RightArrLength];
  24.  
  25.         for (int i = 0; i < LeftArrLength; i++) {
  26.             L[i] = arr[l + i];
  27.         }
  28.  
  29.         for (int j = 0; j < RightArrLength; j++) {
  30.             R[j] = arr[m + 1 + j];
  31.         }
  32.  
  33.         int i = 0;
  34.         int j = 0;
  35.         int k = l;
  36.  
  37.         while(i < LeftArrLength && j < RightArrLength){
  38.             if(L[i] <= R[j]){
  39.                 arr[k] = L[i];
  40.                 i++;
  41.             }else {
  42.                 arr[k] = R[j];
  43.                 j++;
  44.             }
  45.             k++;
  46.         }
  47.  
  48.         while(i < LeftArrLength){
  49.             arr[k] = L[i];
  50.             i++;
  51.             k++;
  52.         }
  53.  
  54.         while(j < RightArrLength){
  55.             arr[k] = R[j];
  56.             j++;
  57.             k++;
  58.         }
  59.     }//end of CompareAndMerge//
  60.  
  61.     public static void main(String[] args) {
  62.         Scanner scan = new Scanner(System.in);
  63.         System.out.println("Enter number of elements: ");
  64.         int N = scan.nextInt();
  65.         int[] ARR = new int[N];
  66.         for (int i = 0; i < N; i++) {
  67.             System.out.print("Enter element " + i + " :");
  68.             ARR[i] = Integer.parseInt(scan.next());
  69.         }
  70.         //print before//
  71.         System.out.println("BEFORE SORT: " + Arrays.toString(ARR));
  72.  
  73.         Divide(ARR, 0, ARR.length -1);
  74.  
  75.         //print after//
  76.         System.out.println("BEFORE SORT: " + Arrays.toString(ARR));
  77.     }//end of main//
  78. }//end of class//
  79.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement