利用递归实现快速排序
时间: 2023-11-16 10:57:01 浏览: 89
递归实现快速排序
5星 · 资源好评率100%
利用递归实现快速排序的过程如下:首先选取一个基准数,将待排序序列分成两部分,一部分比基准数小,一部分比基准数大。然后对这两部分分别进行递归排序,直到每个子序列只有一个元素或者为空。最后将所有子序列合并起来即可得到有序序列。递归实现快速排序的代码如下:
```
void QuickSort(vector<int>& a, int left, int right) {
if (left >= right) return;
int i = left, j = right, pivot = a[left];
while (i < j) {
while (i < j && a[j] >= pivot) j--;
if (i < j) a[i++] = a[j];
while (i < j && a[i] < pivot) i++;
if (i < j) a[j--] = a[i];
}
a[i] = pivot;
QuickSort(a, left, i - 1);
QuickSort(a, i + 1, right);
}
```
其中,left和right分别表示待排序序列的左右边界,pivot表示基准数。在递归过程中,每次选取一个基准数,将序列分成两部分,然后对这两部分分别进行递归排序,直到每个子序列只有一个元素或者为空。最后将所有子序列合并起来即可得到有序序列。
阅读全文