/* Jia Tse CS477 - Algorithm Analysis Algorithm from COMPUTER ALGORITHMS C++ - Ellis Horowitz 02/24/06 MERGE SORT reads from stdin n numbers and store it in a[]. Then it uses merge sort techniques to sort. */ #include using namespace std; #define n 100 //size of array int a[n]; int b[n]; void mergeSort(int, int); void merge(int, int, int); void print(int [], int); void mergeSort(int low, int high){ /* a [low:high] is a global array to be sorted. */ if (low < high) { int mid = (low+high)/2; mergeSort(low, mid); mergeSort(mid+1, high); merge(low, mid, high); } } void merge(int low, int mid, int high) { /* a[low:high] is a global array containing two sorted subsets in a[low:mid] and a[mid+1, high]. b[] is a temporary array to hold merged values; */ int h = low, i = low, j = mid+1, k; while ((h<=mid) && (j<=high)) { if (a[h] <= a[j]) {b[i] = a[h]; h++; } else { b[i] = a[j]; j++; } i++; } if (h > mid) for (k=j; k<=high; k++){ b[i] = a[k]; i++; } else for (k=h; k<=mid; k++) { b[i] = a[k]; i++; } for (k=low; k<=high; k++) a[k] = b[k]; } void print(int size){ int i; for (i=0; i>a[i]; } int main(){ read(n); mergeSort(0,n-1); print(n); return 0; }