|
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
 |
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);
|
|
}
}
|
|
|
|