void mergeSort(vector & a, int first, int last) { int mid; if ( first == last); // empty case, only 1 value, do nothing else if (first+1 == last) // list of 2 values, swap if necessary { if (a[first] > a[last]) swap( a[first], a[last] ); } else // general case { mid = (first + last)/2; mergeSort(a, first, mid); mergeSort(a, mid+1, last); merge(a, first, mid, last); } }