用C语言写一个一最后一个元素为枢轴的快速排序递归算法代码
时间: 2024-05-07 17:17:06 浏览: 76
好的,以下是用C语言实现的一最后一个元素为枢轴的快速排序递归算法代码:
```c
void quicksort(int arr[], int left, int right) {
if (left < right) {
int pivotIndex = right; // 选择最后一个元素为枢轴
int pivot = arr[pivotIndex]; // 枢轴值
int i = left - 1; // i指向小于枢轴值的元素
for (int j = left; j < right; j++) {
if (arr[j] < pivot) {
i++;
// 将当前元素与i指向的元素交换
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 将枢轴值与i+1位置的元素交换
int temp = arr[i + 1];
arr[i + 1] = arr[pivotIndex];
arr[pivotIndex] = temp;
// 递归调用
quicksort(arr, left, i);
quicksort(arr, i + 2, right);
}
}
```
这段代码可以按照标准的快速排序算法思路完成排序,只是在选择枢轴时固定选择最后一个元素。需要注意的是,在递归调用时,对于左半部分的排序应该包含左边界left,对于右半部分的排序应该从i+2开始,因为i+1已经是枢轴了。
阅读全文