写一个一最后一个元素为枢轴的快速排序递归算法代码
时间: 2024-04-30 15:17:23 浏览: 11
好的,以下是针对您的问题编写的一份最后一个元素为枢轴的快速排序递归算法代码(使用C++实现):
```
void partition(int arr[], int low, int high, int& pivotIndex) {
int pivotValue = arr[high]; // 将最后一个元素作为枢轴
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] <= pivotValue) {
i++;
std::swap(arr[i], arr[j]);
}
}
std::swap(arr[i + 1], arr[high]);
pivotIndex = i + 1;
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pivotIndex;
partition(arr, low, high, pivotIndex); // 对数组进行划分
quickSort(arr, low, pivotIndex - 1); // 对划分出的左侧子数组排序
quickSort(arr, pivotIndex + 1, high); // 对划分出的右侧子数组排序
}
}
```
以上代码实现了最后一个元素为枢轴的快速排序递归算法。在分割数组时,首先将最后一个元素作为枢轴(pivotValue),然后通过比较每个元素与枢轴的大小关系,将小于等于枢轴的元素移到枢轴左侧,并将大于枢轴的元素移到枢轴右侧,最终将枢轴插入到中间位置上,实现了对数组的划分。然后递归地对划分出的左侧和右侧子数组进行排序,最终得到完整的有序数组。
希望这份代码可以帮助到您,如果您还有其他问题或需求,欢迎随时提出。