写一个快速排序的c语言算法
时间: 2023-12-09 08:36:18 浏览: 68
c语言的快速排序算法
以下是C语言实现的快速排序算法:
```c
// 快速排序
void QuickSort(int* arr, int begin, int end) {
if (begin >= end) {
return;
}
int key = PartSort(arr, begin, end); // 单趟排序并获取基准值
QuickSort(arr, begin, key-1); // 排左序列
QuickSort(arr, key+1, end); // 排右序列
}
// 单趟排序
int PartSort(int* arr, int begin, int end) {
int key = arr[end]; // 以最后一个元素为基准值
while (begin < end) {
while (begin < end && arr[begin] <= key) {
begin++; }
while (begin < end && arr[end] >= key) {
end--;
}
if (begin < end) {
Swap(&arr[begin], &arr[end]);
}
}
Swap(&arr[begin], &arr[end]); // 将基准值放到正确的位置
return begin;
}
// 交换两个元素的值
void Swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
阅读全文