图示思想:

int Partition(int* a, int low, int high)
{
int pivotkey = a[low];
while (low < high)
{
while (low < high && a[high] >= pivotkey)
high--;
a[low] = a[high];
while (low < high && a[low] <= pivotkey)
low++;
a[high] = a[low];
}
a[low] = pivotkey;
return low;
}
void QuickSort(int* a, int low, int high)
{
if (low < high)
{
int pivotloc = Partition(a, low, high);
QuickSort(a, low, pivotloc-1);
QuickSort(a, pivotloc+1, high);
}
}
int main()
{
int arr[] = { 9,2,3,1,5,4,7,8,6 };
int n = sizeof(arr) / sizeof(int);
int low = 0, high = n - 1;
QuickSort(arr, low,high);
for (int i = 0; i < n; i++)
{
cout << arr[i] << " ";
}
cout << endl;
return 0;
}