用C语言写一个以最后一个元素为枢轴的快速排续
时间: 2023-12-29 07:52:43 浏览: 65
使用最后一个元素作为枢轴的快速排序算法实现比较简单,下面是C语言代码示例:
```c
#include <stdio.h>
void swap(int* a, int* b){
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int arr[], int low, int high){
int pivot = arr[high]; // 以最后一个元素作为枢轴
int i = low - 1; // 将i设为枢轴的左边界
for(int j = low; j < high; j++){
if(arr[j] < pivot){
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i+1], &arr[high]);
return i + 1; // 返回枢轴的位置
}
void quickSort(int arr[], int low, int high){
if(low < high){
int idx = partition(arr, low, high);
quickSort(arr, low, idx-1);
quickSort(arr, idx+1, high);
}
}
int main(){
int arr[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr)/sizeof(arr[0]);
quickSort(arr, 0, n-1);
for(int i = 0; i < n; i++){
printf("%d ", arr[i]);
}
return 0;
}
```
这段代码实现了以最后一个元素作为枢轴的快速排序,其中`partition`函数用于分割数组,将小于枢轴的元素放到其左边,大于枢轴的元素放到其右边;`quickSort`函数进行递归调用,对分割后的两个子数组进行递归排序。最终输出排好序的数组。
阅读全文