快速排序记录
解释说明
传入一个数组以及low 和high,将数组下标为low的值作为枢轴,分别从数组两边往中间走,比枢轴小的放左边,大的放右边,递归调用实现排序
// 用第一个元素将等待排序的数组划分成左右两个部分
int Partition(int A[], int low, int high){
int pivot = A[low];
while (low < high) {
while (low < high && A[high] >= pivot) high--;
A[low] = A[high];
while (low < high && A[high] <= pivot) low++;
A[high] = A[low];
}
A[low] = pivot;
return low;
}
// 快速排序
void QuickSort(int A[], int low, int high){
if(low < high){
int pivotpos = Partition(A, low, high);
QuickSort(A, low, pivotpos - 1);
QuickSort(A, pivotpos + 1, high);
}
}