请你写一个快速排序用c++
时间: 2023-02-06 12:46:59 浏览: 75
下面是一个快速排序的C语言实现:
```
#include <stdio.h>
void quick_sort(int *arr, int left, int right) {
if (left >= right) {
return;
}
int pivot = arr[(left + right) / 2];
int i = left;
int j = right;
while (i < j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
quick_sort(arr, left, j);
quick_sort(arr, i, right);
}
int main() {
int arr[] = {3, 5, 1, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, n - 1);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在这段代码中,我们首先定义了一个 `quick_sort` 函数,它接受三个参数:一个整型数组 `arr`,以及两个整型变量 `left` 和 `right`。这两个变量代表待排序数组的左右边界。
在函数内部,我们首先判断如果 `left` 大于等于 `right`,就直接返回,否则进入排序的主体流程。
接着,我们选择数组的中间元素作为基准元素,并定义两个变量 `i` 和 `j` 分别指向数组的左右端点。然后我们开始循环,在循环内部,我们每次将两个指针向中间移动,如果找到了需要交换的两个