Thursday, December 29, 2016

Merge Sort

public class MergeSort{
  
 public static void main(String... arg){
  int[] arr= new int[]{20,12,34,1,56,0,109,76};
  MergeSort m = new MergeSort();
  arr = m.mergeSort(arr);
  
  for(int i : arr)
   System.out.println(i);
 }
  
 //method to implement merge sort -- Recursive approach
 public int[] mergeSort(int[] arr){
  int n = arr.length;
  if(n < 2) return arr;
  int mid = n/2;
  
  int[] left = new int[mid];
  int[] right = new int[n-mid];
  
  for(int i=0 ; i<mid ; i++)
   left[i] = arr[i];
  
  for(int i=mid ; i<n ; i++)
   right[i-mid] = arr[i];
  
  mergeSort(left);
  mergeSort(right);
  
  arr = merge(left,right,arr);
  
  return arr;
 }
 
 //method to merge arrays
 public int[] merge(int[] left, int[] right, int[] arr){
  
  int i=0,j=0,k=0;
  
  while(i < left.length && j < right.length)
   if(left[i] <= right[j]) 
      arr[k++] = left[i++];
   else 
      arr[k++] = right[j++]; 
  
  while(i < left.length) 
      arr[k++] = left[i++];
    
  while(j < right.length) 
      arr[k++] = right[j++];
  
  return arr;
 } 
}


No comments:

Post a Comment