2016-07-19

Merge Sort Java Program


  1. import java.util.Scanner;
  2.  

  3. public class MergeSort 
  4. {
  5.     
  6.     public static void sort(int[] a, int low, int high) 
  7.     {
  8.         int N = high - low;         
  9.         if (N <= 1) 
  10.             return; 
  11.         int mid = low + N/2; 
  12.         // recursively sort 
  13.         sort(a, low, mid); 
  14.         sort(a, mid, high); 
  15.         // merging two sorted sub-arrays
  16.         int[] temp = new int[N];
  17.         int i = low, j = mid;
  18.         for (int k = 0; k < N; k++) 
  19.         {
  20.             if (i == mid)  
  21.                 temp[k] = a[j++];
  22.             else if (j == high) 
  23.                 temp[k] = a[i++];
  24.             else if (a[j]<a[i]) 
  25.                 temp[k] = a[j++];
  26.             else 
  27.                 temp[k] = a[i++];
  28.         }    
  29.         for (int k = 0; k < N; k++) 
  30.             a[low + k] = temp[k];         
  31.     }

  32.     public static void main(String[] args) 
  33.     {
  34.         Scanner scan = new Scanner( System.in );        
  35.         System.out.println("Merge Sort");
  36.         int n, i;

  37.         System.out.println("Enter number");
  38.         n = scan.nextInt();
  39.         int arr[] = new int[ n ];

  40.         for (i = 0; i < n; i++)
  41.             arr[i] = scan.nextInt();
  42.         sort(arr, 0, n);

  43.         System.out.println("Sorted element");        
  44.         for (i = 0; i < n; i++)
  45.             System.out.print(arr[i]+" ");            
  46.         System.out.println();            
  47.     }    
  48. }
Merge sort time complexity

        Worst case performance : O(n log n)
        Best case performance : O(n log n)
        Average case performance : O(n log n)

No comments:

Post a Comment