代码参考书上
#include<iostream>
#include<string.h>
using namespace std;
int a[100];
int n;
int quickSort(int lo, int hi) {
int pivot = a[lo];
while (lo < hi) {
while (lo < hi&&pivot <= a[hi]) hi--;//先把轴点与右端的数字比较,如果小于轴点,则停止比较 (这是升序排序,如果需要降序排序,则改变比较的符号即可
a[lo] = a[hi];//一开始a[lo]为轴点的数字,轴点已保存,因此不会有数字被覆盖
while (lo < hi&&pivot >= a[lo]) lo++;
a[hi] = a[lo];
}
a[lo] = pivot;
return lo;
}
void QS(int lo, int hi) {
if (lo == hi) return;//只有1个数字,则直接返回
int pivot = quickSort(lo, hi);//构造轴点
if (pivot > 0 && lo < hi) QS(lo, pivot - 1);
if (pivot < n && lo < hi) QS(pivot + 1, hi);
}
int main() {
while (cin >> n) {
memset(a, 0, sizeof(a));
for (int i = 0; i < n; i++) {
cin >> a[i];
}
QS(0, n - 1);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
}
}