#include "batcher.h" int aux[4096]; shuffle(int a[], int l, int r) { int i, j, m = (l+r)/2; for (i = l, j = 0; i <= r; i+=2, j++) { aux[i] = a[l+j]; aux[i+1] = a[m+1+j]; } for (i = l; i <= r; i++) a[i] = aux[i]; } unshuffle(int a[], int l, int r) { int i, j, m = (l+r)/2; for (i = l, j = 0; i <= r; i+=2, j++) { aux[l+j] = a[i]; aux[m+1+j] = a[i+1]; } for (i = l; i <= r; i++) a[i] = aux[i]; } mergeTD(int a[], int l, int r) { int i, m = (l+r)/2; if (r == l+1) compexch(l, r); if (r < l+2) return; unshuffle(a, l, r); mergeTD(a, l, m); mergeTD(a, m+1, r); shuffle(a, l, r); for (i = l+1; i < r; i+=2) compexch(i, i+1); } void mergesort(int a[], int l, int r) { if (r > l) { int m = (r+l)/2; mergesort(a, l, m); mergesort(a, m+1, r); mergeTD(a, l, r); } }