C语言中任意基准值的快速排序算法
时间: 2023-07-07 20:21:03 浏览: 110
快速排序_C语言_快速排序_
快速排序是一种基于比较的排序算法,其基本思想是通过分治的策略将一个序列分成较小和较大的两个子序列,然后递归地排序两个子序列。
以下是基于任意基准值的C语言快速排序算法的实现:
```c
void quicksort(int *arr, int left, int right){
if(left >= right) return; // 递归终止条件,子序列中只有一个元素
int i = left, j = right, pivot = arr[left]; // 选取基准值为子序列的第一个元素
while(i < j){
while(i < j && arr[j] >= pivot) j--; // 从右往左找到第一个小于基准值的元素
if(i < j) arr[i++] = arr[j];
while(i < j && arr[i] < pivot) i++; // 从左往右找到第一个大于等于基准值的元素
if(i < j) arr[j--] = arr[i];
}
arr[i] = pivot; // 将基准值放到正确的位置
quicksort(arr, left, i - 1); // 递归排序左半部分
quicksort(arr, i + 1, right); // 递归排序右半部分
}
```
调用方式为 `quicksort(arr, 0, len - 1)`,其中 `arr` 是要排序的数组,`len` 是数组的长度。
阅读全文