Function Templates
template <class TYPE>   //qsort.h
inline void swap(TYPE v[], int i, int j) {
  TYPE temp;
  temp = v[i];
  v[i] = v[j];
  v[j] = temp;
}
template <class TYPE>
void qsort(TYPE v[], int left, int right) {
  if (left < right) {
    swap(v, left, (left+right)/2);
    int last = left;
    for (int i=left+1; i <= right; ++i)
      if (v[i] < v[left])
        swap(v, ++last, i);
    swap(v, left, last);
    qsort(v, left, last-1);
    qsort(v, last+1, right);
  }   }