//************************* // Mergesort example code // adapted from // http://p2p.wrox.com/topic.asp?TOPIC_ID=69474 //************************* #include using namespace std; const int MAX_SIZE = 20; void mergeSort(int numbers[], int left, int right); void merge(int numbers[], int left, int mid, int right); int main (int argc, char * argv[]) { int numElements = 8; int list [MAX_SIZE] = {9,12,16,2,1,25,4,3}; cout << "before sort " << endl; for (int i = 0; i < numElements; i++) cout << list[i] << " "; cout << endl; mergeSort(list, 0, numElements - 1); cout << endl; cout << "after sort " << endl; for (int i = 0; i < numElements; i++) cout << list[i] << " "; cout << endl; } void mergeSort(int numbers[], int left, int right) { int mid; if (right > left) { mid = (right + left) / 2; mergeSort(numbers, left, mid); mergeSort(numbers, mid+1, right); merge(numbers, left, mid+1, right); } } void merge(int numbers[], int left, int mid, int right) { cout << endl; cout << "START MERGE " << "left = " << left << " mid= " <