快速排序
下面例子中,选定最后一个元素40作为中间值。i用来遍历数组的下标;k表示比40小的元素将要存的下标
int Partition(int* arr, int left, int right) {
int k, i;
for (i = k = left; i < right; i++) {
if (arr[i] < arr[right]) {
swap(arr[k], arr[i]);
k++;
}
}
swap(arr[k], arr[right]);
return k;
}
//递归实现快速排序
void QuickSort(ElemType A[], int low, int high) {
if (low < high) {
int pivotpos = Partition(A, low, high);//分割点左边的元素都比分割点小,分割点右边的元素都比分割点大
QuickSort(A, low, pivotpos - 1);
QuickSort(A, pivotpos + 1, high);
}
}