c++快速排序算法
时间: 2023-06-21 20:15:07 浏览: 122
快速排序算法C++实现(超详细解析)
下面是C++实现的快速排序算法:
```c++
#include <iostream>
using namespace std;
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
/* partition */
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
int main() {
int arr[] = {5, 2, 9, 4, 7, 6, 1, 3, 8};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
return 0;
}
```
快速排序算法分为两个步骤:分区和递归。分区通过选定一个主元素(pivot),将数组分成两部分:左半部分的元素小于等于主元素,右半部分的元素大于等于主元素。递归则对左半部分和右半部分分别进行排序。在实现时,可以使用头尾指针i和j来遍历数组,将小于主元素的元素放在左半部分,大于主元素的元素放在右半部分,直到i > j为止。最后,对左半部分和右半部分分别进行递归排序。
阅读全文