Wednesday, 11 February 2015

Merge Sort Java Implementation ...

package com.ds.sort;

public class MergeSort
{
        private static int[] tmpArr;

        private void mergeSort(int[] arr, int low, int high)
        {
                 if (low < high) {
                         int middle = (low + high) / 2;
                         
                         mergeSort(arr, low, middle);
                         mergeSort(arr, middle + 1, high);
                  
                         merge(arr, low, middle, high);
                 }
        }

        private void merge(int[] arr, int low, int middle, int high)
        {
                  for (int i = low; i <= high; i++) {
                          tmpArr[i] = arr[i];
                  }

                  int i = low;
                  int j = middle + 1;
                  int k = low;

                  while (i <= middle && j <= high) {
                           if (tmpArr[i] <= tmpArr[j]) {
                                   arr[k] = tmpArr[i];
                                   i++;
                           } else {
                                   arr[k] = tmpArr[j];
                                   j++;
                           }
                           k++;
                   }

                   while (i <= middle) {
                           arr[k] = tmpArr[i];
                           k++;
                           i++;
                   }
         }

         public static void main(String[] args) throws Exception
         {
                  int[] inputArr = { 45, 23, 11, 89, 77, 98, 4, 28, 65, 43 };
         
                  MergeSort mms = new MergeSort();
                  MergeSort.tmpArr = new int[10];

                  mms.mergeSort(inputArr, 0, 9);

                  for (int i : inputArr) {
                         System.out.print(i);
                         System.out.print(" ");
                  }
               
         }

}

No comments:

Post a Comment