C语言中可以任意基准值的快速排序算法如何编写
时间: 2023-07-18 09:18:59 浏览: 81
以下是一个可以任意基准值的快速排序算法的C语言实现:
```c
void quick_sort(int arr[], int left, int right, int pivot) {
int i = left, j = right;
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--;
}
}
if (left < j) {
quick_sort(arr, left, j, pivot);
}
if (i < right) {
quick_sort(arr, i, right, pivot);
}
}
```
其中,参数 `arr` 是待排序的数组,`left` 和 `right` 分别是待排序子数组的左右边界,`pivot` 是基准值。在函数内部,我们通过双指针法将数组分成两部分,左边的元素都小于等于基准值,右边的元素都大于等于基准值。然后递归地对左右两部分进行排序,直到子数组的长度小于等于1。
在调用函数时,你可以将任意值作为基准值传入,例如:
```c
int arr[] = {5, 2, 9, 3, 6, 8};
int n = sizeof(arr) / sizeof(arr[0]);
quick_sort(arr, 0, n-1, 6); // 以 6 为基准值进行排序
```
这样就可以实现任意基准值的快速排序啦!
阅读全文