#include <iostream>
using namespace std;
void swap(int &a, int &b)
{
//交换两个元素
int temp = a;
a = b;
b = temp;
}
int Partition(int A[], int p, int r)
{
//将A[p...r]划分为:A[p...q-1] <= A[q] <= A[q+1...r]
int X = A[r]; //划分元
int i = p-1; //保持A[p...r]<=X;
for (int j=p; j<=r-1; j++)
{
//始终i<j
if (A[j] <= X) {
i = i+1;
swap(A[i],A[j]);
}
}
swap(A[i+1],A[r]);
return (i+1);
}
void QuickSort(int A[], int p, int r)
{
if (p<r)
{
int q = Partition(A, p, r);
QuickSort(A, p, q-1);
QuickSort(A, q+1, r);
}
}
int main()
{
int A[6] = {3,1,5,7,4,2};
QuickSort(A, 0, 5);
for (int i=0; i<6; i++)
{
cout << A[i] << " ";
}
cout << endl;
return 0;
}