/* The code is developed from Cay S. Horstmann CCC text. */ #include "mergeSortC.h" MerSort::MerSort(int n, int max) { rand_seed(); int i; for(i=0; i b(n); // temporary merge vector, sized just as needed for (k = 0, i = from, j = mid+1; i <= mid && j <= to; k++) if (v[i] < v[j]) // smallest goes first { b[k] = v[i]; i++; } else { b[k] = v[j]; j++; } for (; i <= mid; i++, k++) // remaining elements from first half b[k] = v[i]; for (; j <= to; j++, k++) // remaining elements from second half b[k] = v[j]; for (k = 0; k < n; k++) // copy merged vector back to a v[k+from] = b[k]; } // merge void MerSort::sort( ) { sort(0, v.size()-1); } void MerSort::sort( int from, int to) { int mid; if (from == to) return; mid = (from + to) / 2; sort(from, mid); sort(mid + 1, to); merge(from, mid, to); } // mergeSort void MerSort::read( ) { int datum; while( cin>> datum) v.push_back(datum); }//read void MerSort::read( string & f) { int datum; ifstream fs; fs.open(f.c_str()); if(fs.fail()){ cerr<< "Failed to open "<> datum) v.push_back(datum); fs.close(); } //read void MerSort::print( ) { for(int i=0; i