int Partition(int array[], int low, int high)
{
// 採用子序列的第一個元素爲樞紐元素
int pivot = array[low];
while (low < high)
{
// 從後往前在後半部分中尋找第一個小於樞紐元素的元素
while (low < high && array[high] >= pivot)
{
high--;
}
// 將這個比樞紐元素小的元素交換到前半部分
Swap(&array[low], &array[high]);
// 從前往後在前半部分中尋找第一個大於樞紐元素的元素
while (low < high && array[low] <= pivot)
{
low++;
}
// 將這個比樞紐元素大的元素交換到後半部分
Swap(&array[low], &array[high]);
}
// 返回樞紐元素所在的位置
return low;
}
// 快速排序
void QuickSort(int array[], int low, int high)
{
if (low < high)
{
int n = Partition(array, low, high);
QuickSort(array, low, n);
QuickSort(array, n + 1, high);
}
}