Advertisement
Guest User

Untitled

a guest
May 6th, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.41 KB | None | 0 0
  1. public class A24 {
  2.  
  3.     /**
  4.      * @param args the command line arguments
  5.      */
  6.     public static void main(String[] args) {
  7.         List<Integer> l = new ArrayList<Integer>();
  8.         l.add(4);
  9.         l.add(3);
  10.         l.add(9);
  11.         sort(l);
  12.         System.out.print(l);
  13.      
  14.     }
  15.  
  16.     static public <T extends Comparable<T>> void sort(List<T> a) {
  17.         sortR(a, 0, a.size()-1);
  18.     }
  19.  
  20.     private static <T extends Comparable<T>> void sortR(List<T> a, int p, int r) {
  21.         if (r <= p) {
  22.             return;
  23.         }
  24.         int q = (r + p) / 2;
  25.         sortR(a, p, q);
  26.         sortR(a, q + 1, r);
  27.         merge(a, p, q, r);
  28.     }
  29.  
  30.     private static <T extends Comparable<T>> void merge(List<T> a, int p, int q, int r) {
  31.         int p1 = p; //runs through left part
  32.         int p2 = q + 1; //runs through right part
  33.         int d = 0;
  34.         List<T> temp = new ArrayList<T>((r - p) + 1);
  35.         while (p1 <= q && p2 <= r) {
  36.             if (a.get(p1).compareTo(a.get(p2)) <= 0) {
  37.                 temp.set(d++, a.get(p1++));
  38.             } else {
  39.                 temp.set(d++, a.get(p2++));
  40.             }
  41.         }
  42.         while (p1 <= q) {
  43.             temp.set(d++, a.get(p1++));
  44.         }
  45.         while (p2 <= r) {
  46.             temp.set(d++, a.get(p2++));
  47.         }
  48.         for (int i = 0; i <= r - p; i++) {
  49.             a.set(p + 1, temp.get(i));
  50.         }
  51.  
  52.     }
  53.  
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement