Advertisement
Guest User

Untitled

a guest
May 31st, 2015
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.44 KB | None | 0 0
  1. import java.util.*;
  2.  
  3. public class MergerSort
  4. {
  5.     public static void clearScreen()
  6.     {
  7.       System.out.print('\u000C');
  8.     }
  9.    
  10.     public static void main(String[] args)
  11.     {
  12.         Integer[] a = {2, 6, 3, 5, 1};
  13.         mergeSort(a);
  14.         System.out.println(Arrays.toString(a));
  15.     }
  16.  
  17.     public static void mergeSort(Comparable [ ] a)
  18.     {
  19.         Comparable[] tmp = new Comparable[a.length];
  20.         mergeSort(a, tmp,  0,  a.length - 1);
  21.     }
  22.  
  23.  
  24.     private static void mergeSort(Comparable [ ] a, Comparable [ ] tmp, int left, int right)
  25.     {
  26.         if( left < right )
  27.         {
  28.             int center = (left + right) / 2;
  29.             mergeSort(a, tmp, left, center);
  30.             mergeSort(a, tmp, center + 1, right);
  31.             merge(a, tmp, left, center + 1, right);
  32.         }
  33.     }
  34.  
  35.  
  36.     private static void merge(Comparable[ ] a, Comparable[ ] tmp, int left, int right, int rightEnd )
  37.     {
  38.         int leftEnd = right - 1;
  39.         int k = left;
  40.         int num = rightEnd - left + 1;
  41.  
  42.         while(left <= leftEnd && right <= rightEnd)
  43.             if(a[left].compareTo(a[right]) <= 0)
  44.                 tmp[k++] = a[left++];
  45.             else
  46.                 tmp[k++] = a[right++];
  47.  
  48.         while(left <= leftEnd)    // Copy rest of first half
  49.             tmp[k++] = a[left++];
  50.  
  51.         while(right <= rightEnd)  // Copy rest of right half
  52.             tmp[k++] = a[right++];
  53.  
  54.         // Copy tmp back
  55.         for(int i = 0; i < num; i++, rightEnd--)
  56.             a[rightEnd] = tmp[rightEnd];
  57.     }
  58.  }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement