Advertisement
Kriss_7777

Merge Sort 1

Nov 15th, 2019
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.86 KB | None | 0 0
  1. package com.java2novice.sorting;
  2.  
  3. public class MyMergeSort {
  4.      
  5.     private int[] array;
  6.     private int[] tempMergArr;
  7.     private int length;
  8.  
  9.     public static void main(String a[]){
  10.          
  11.         int[] inputArr = {45,23,11,89,77,98,4,28,65,43};
  12.         MyMergeSort mms = new MyMergeSort();
  13.         mms.sort(inputArr);
  14.         for(int i:inputArr){
  15.             System.out.print(i);
  16.             System.out.print(" ");
  17.         }
  18.     }
  19.      
  20.     public void sort(int inputArr[]) {
  21.         this.array = inputArr;
  22.         this.length = inputArr.length;
  23.         this.tempMergArr = new int[length];
  24.         doMergeSort(0, length - 1);
  25.     }
  26.  
  27.     private void doMergeSort(int lowerIndex, int higherIndex) {
  28.          
  29.         if (lowerIndex < higherIndex) {
  30.             int middle = lowerIndex + (higherIndex - lowerIndex) / 2;
  31.             // Below step sorts the left side of the array
  32.             doMergeSort(lowerIndex, middle);
  33.             // Below step sorts the right side of the array
  34.             doMergeSort(middle + 1, higherIndex);
  35.             // Now merge both sides
  36.             mergeParts(lowerIndex, middle, higherIndex);
  37.         }
  38.     }
  39.  
  40.     private void mergeParts(int lowerIndex, int middle, int higherIndex) {
  41.  
  42.         for (int i = lowerIndex; i <= higherIndex; i++) {
  43.             tempMergArr[i] = array[i];
  44.         }
  45.         int i = lowerIndex;
  46.         int j = middle + 1;
  47.         int k = lowerIndex;
  48.         while (i <= middle && j <= higherIndex) {
  49.             if (tempMergArr[i] <= tempMergArr[j]) {
  50.                 array[k] = tempMergArr[i];
  51.                 i++;
  52.             } else {
  53.                 array[k] = tempMergArr[j];
  54.                 j++;
  55.             }
  56.             k++;
  57.         }
  58.         while (i <= middle) {
  59.             array[k] = tempMergArr[i];
  60.             k++;
  61.             i++;
  62.         }
  63.  
  64.     }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement