public static void mergesort(int[] A) {
int[] aux = new int[A.length];
mergesort(A, aux, 0, A.length-1);
}
private static void mergesort(int[] A, int[] aux, int lo, int hi) {
if (lo >= hi) return;
int m = (lo+hi) / 2;
mergesort(A, aux, lo, m);
mergesort(A, aux, m+1, hi);
merge(A, aux, lo, m, hi);
}
private static void merge(int[] A, int[] aux, int lo, int m, int hi) {
int i = lo;
int j = m+1;
for (int k=lo; k <= hi; k++) {
if (i > m) {
aux[k] = A[j];
j++;
} else if (j > hi) {
aux[k] = A[i];
i++;
} else if (A[j] < A[i]) {
aux[k] = A[j];
j++;
} else {
aux[k] = A[i];
i++;
}
}
for (int k=lo; k <= hi; k++) {
A[k] = aux[k];
}
}
Thursday, October 22, 2015
MergeSort in Java
Labels:
algorithms,
mergesort
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment