#include <iostream>
using namespace std;
int Partition(int a[], int p1, int p2)
{
int temp = a[p1];
while (p1 < p2)
{
while (p1 < p2 && a[p2] > temp) p2--;
a[p1] = a[p2];
while (p1 < p2 && a[p1] < temp) p1++;
a[p2] = a[p1];
}
a[p1] = temp;
return p1;
}
void QuickSort(int a[], int left, int right)
{
int temp = 0;
if (right > left)
{
temp = Partition(a, left, right);
QuickSort(a, left, temp - 1);
QuickSort(a, temp + 1, right);
}
}
// 在纸上比划,容易理解多了;
int main()
{
int a[] = {9,3,2,5,6,4,8,1};
int size = sizeof(a)/sizeof(int);
for (int i = 0; i < size; ++i)
{
cout << a[i] << endl;
}
cout << endl;
QuickSort(a, 0, size - 1);
for (int i = 0; i < size; ++i)
{
cout << a[i] << endl;
}
}