C语言快速排序
时间: 2023-06-21 15:15:25 浏览: 57
C语言的快速排序算法通常实现如下:
```c
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--;
if (i < j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[pivot];
arr[pivot] = arr[j];
arr[j] = temp;
quick_sort(arr, left, j - 1);
quick_sort(arr, j + 1, right);
}
}
```
其中,`left`和`right`分别为待排序数组的左右边界。算法的基本思想是通过分治的方法将原问题分解为若干个规模更小的子问题,然后对每个子问题递归地进行快速排序,最终将所有子问题的结果合并起来得到原问题的解。具体实现中,选择一个基准元素(通常为待排序数组的第一个元素),然后将数组中比它小的元素移到它的左边,比它大的元素移到它的右边,最后将基准元素放到正确的位置上。然后递归地对左右两个子数组执行同样的操作,直到排序完成。