// IE Test: javac MergeSort.java; appletviewer MergeSort.html
import java.awt.*;
public class MergeSort extends Animate
  {	
    static int N;
    void sort(double[] a, int l, int r)
      { N = (l+r)/2; mergesort(a, l, N-1); }
    void merge(double[] a, int l, int m, int r)
      { int i, j, k;
        for (i = m+1; i > l; i--) exch(a, N+i-1, i-1);
        for (j = m; j < r; j++) exch(a, N+r+m-j, j+1);
        for (k = l; k <= r; k++)
          if (less(a, N+i, N+j))
            exch(a, k, N+(i++)); else exch(a, k, N+(j--));
      }
    void mergesort(double[] a, int l, int r)
      { int m = (r+l)/2;
        if (r <= l) return;
        mergesort(a, l, m);
        mergesort(a, m+1, r);
        merge(a, l, m, r);
      }
  }

