// 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); } }