用c语言帮我写一个快速排序的程序
时间: 2023-10-05 17:06:30 浏览: 65
下面是一个用C语言实现快速排序的程序:
```c
#include <stdio.h>
void quickSort(int arr[], int left, int right);
int main() {
int arr[] = {6, 5, 3, 1, 8, 7, 2, 4};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
printf("排序后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void quickSort(int arr[], int left, int right) {
if (left >= right) {
return;
}
int i = left;
int j = right;
int pivot = arr[(left + right) / 2];
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--;
}
}
quickSort(arr, left, j);
quickSort(arr, i, right);
}
```
在程序中,我们使用了递归方式实现了快速排序。我们首先选择数组中间的数作为基准值,然后使用双指针法将数组分成两部分,左边的部分小于基准值,右边的部分大于等于基准值。然后分别对左右两部分进行递归排序,直到最终的子数组只有一个元素或者为空为止。运行程序后,你会看到输出的排序后的数组。
阅读全文