问题 H: 快速排序算法(递归)
时间: 2023-06-30 20:27:40 浏览: 100
快速排序是一种常用的排序算法,其基本思想是选取一个基准元素,将待排序序列分为两个部分,一部分小于等于基准元素,一部分大于等于基准元素,然后对这两个部分分别进行快速排序,递归执行,直到整个序列有序为止。
快速排序算法的递归实现如下:
```
void quickSort(int arr[], int left, int right) {
if (left < right) {
int i = left, j = right, pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) j--;
if (i < j) arr[i++] = arr[j];
while (i < j && arr[i] < pivot) i++;
if (i < j) arr[j--] = arr[i];
}
arr[i] = pivot;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
}
```
其中,left 和 right 分别表示待排序序列的左右端点,pivot 为基准元素。在递归实现中,首先判断 left 是否小于 right,如果是,则选取一个基准元素,并按照基准元素将序列分为两部分。然后递归对左右两部分进行快速排序,直到整个序列有序为止。
阅读全文