帮我写一个C++快速排序
时间: 2023-03-11 18:18:43 浏览: 45
好的,这是一个快速排序算法的 C 语言实现:
```
void quick_sort(int arr[], int left, int right) {
int i, j, pivot;
if (left < right) {
i = left;
j = right;
pivot = arr[left];
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
if (i < j) {
arr[i] = arr[j];
i++;
}
while (i < j && arr[i] < pivot) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = pivot;
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
}
```
这个算法使用了分治的思想,将数组分成两个子数组并排序。它的时间复杂度是 O(n log n),是一种非常快速的排序算法。
使用方法是:调用 quick_sort 函数并传入要排序的数组、数组的左端点和右端点。例如,如果要对数组 arr 排序,可以使用如下代码:
```
int arr[] = {3, 5, 1, 2, 4};
int n = sizeof(arr) / sizeof(int);
quick_sort(arr, 0, n - 1);
```
排序后,数组 arr 中的元素就会从小到大排序。