#include <iostream>
#include <stdio.h>
using namespace std;
int n;
void travel(int a[]) {
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
}
int partition(int a[],int low,int high) {
//pivot是一个
a[n] = a[low];
while (low < high) {
while (low<high&&a[high] >= a[n]) { --high; };
a[low] = a[high];
while (low<high&&a[low] <= a[n]) {++low; };
a[high] = a[low];
}
a[low] = a[n];
travel(a);
return low;
}
void Qsort(int a[],int low,int high) {
if (low < high) {
int pivot = partition(a, low, high);
Qsort(a,low,pivot-1);
Qsort(a,pivot + 1,high);
}
}
int main()
{
int a[30];
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
a[n] = a[0];
Qsort(a, 0, n-1);
return 0;
}
易错点:1.忘记将最后a[low]=a[n];
tip;第n个位置是哨兵。