用C++写一个快速排序
时间: 2023-03-14 13:23:50 浏览: 8
这是一个快速排序的 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 - 1;
int j = right + 1;
while (i < j) {
do {
i++;
} while (arr[i] < pivot);
do {
j--;
} while (arr[j] > pivot);
if (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
quick_sort(arr, left, j);
quick_sort(arr, j + 1, right);
}
int main() {
int arr[] = {4, 5, 2, 1, 3};
int n = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, n - 1);
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
这段代码的流程是:
1. 如果数组的长度小于等于 1,则直接返回。
2. 取数组中间位置的元素作为 pivot(中间值)。
3. 初始化两个指针 i 和 j。
4. 使用 while 循环不断交换 i 和 j 的位置,直到 i 和 j 相遇。
5. 将小于 pivot 的元素放在 pivot 左边,大于 pivot 的元素放在 pivot 右边。
6. 对 pivot 左边和右边分别使用递归调用快速排序。
最后,输出排序后的数组。
阅读全文