用c++写一个快速排序
时间: 2023-06-03 12:07:59 浏览: 79
好的,以下是使用 C 语言写快速排序的示例代码:
```c
#include <stdio.h>
void quick_sort(int arr[], int left, int right);
int main() {
int arr[] = {1, 5, 3, 7, 2, 8, 4, 6};
int len = sizeof(arr) / sizeof(arr[0]);
int i;
quick_sort(arr, 0, len - 1);
printf("排序后的数组:\n");
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void quick_sort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int i = left, j = right;
int pivot = arr[left]; // 选择第一个元素作为中心点
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
arr[i] = arr[j];
while (i < j && arr[i] < pivot) {
i++;
}
arr[j] = arr[i];
}
arr[i] = pivot;
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
```
第一个参数是待排序的数组,第二个和第三个参数分别是待排序的区间的左右端点。函数会递归地对区间进行划分并排序。具体思路是选择当前区间的第一个元素作为中心点,从区间的两端分别开始向中心点迭代,将不符合要求的元素换到对面去,最后将中心点放在正确的位置上。
注意,这段示例代码并不算完整,因为它没有考虑重复元素的情况,并且忽略了边界条件的判断。实际使用时,还需要进行相应的改进。
阅读全文