int Partition(int a[], int first, int end) {
int i = first, j = end;
while (i < j) {
while (i < j && a[i] <= a[j]) j--;
if (i < j) {
swap(&a[i], &a[j]);
i++;
}
while (i < j && a[i] <= a[j]) i++;
if (i < j) {
swap(&a[i], &a[j]);
j--;
}
}
return i;
/* 一次划分结束,返回轴值位置 */
};
void QuickSort(int a[], int first, int end) {
int pivot;
if (first < end) {
pivot = Partition(a, first, end);
QuickSort(a, first, pivot - 1);
QuickSort(a, pivot + 1, end);
}
else return;
};