帮我用C语言写一个快速排序
时间: 2023-01-11 09:55:36 浏览: 84
C语言中快速排序的实现可以使用递归函数来完成。这里给出一个快速排序的示例代码:
```
#include <stdio.h>
void quick_sort(int arr[], int left, int right) {
int i, j, pivot, temp;
if (left < right) {
pivot = left;
i = left;
j = right;
while (i < j) {
while (arr[i] <= arr[pivot] && i <= right)
i++;
while (arr[j] > arr[pivot] && j >= left)
j--;
if (i < j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[j];
arr[j] = arr[pivot];
arr[pivot] = temp;
quick_sort(arr, left, j - 1);
quick_sort(arr, j + 1, right);
}
}
int main() {
int arr[] = {3, 2, 1, 5, 6, 4};
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;
}
```
这里解释一下快速排序的基本思路:
1.选取第一个元素为基准点。
2.在数组中使用两个指针i和j,分别从两端开始向中间扫描。
3.当i指针所指向的元素小于等于基准点时,i++,当j指针所指向的元素大于基准点时,j--。
4.当i<j时,交换i和j所指向的元素。
5.最终i和j指针重合时,交换基准点和i或j所指向的元素。
6.对基准点左边和右边的两个子数组分别进行