用c语言实现一个快速排序
时间: 2023-07-12 11:33:08 浏览: 43
好的,以下是使用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[low];
int i = low, j = high;
while (i < j) {
// 从右往左找第一个小于基准元素的元素
while (i < j && arr[j] >= pivot) {
j--;
}
// 从左往右找第一个大于基准元素的元素
while (i < j && arr[i] <= pivot) {
i++;
}
// 交换这两个元素的位置
if (i < j) {
swap(&arr[i], &arr[j]);
}
}
// 将基准元素与i所在位置的元素交换位置
swap(&arr[low], &arr[i]);
// 返回基准元素的位置
return i;
}
// 快速排序函数
void quicksort(int arr[], int low, int high) {
if (low < high) {
// 分割待排序序列
int pivot_pos = partition(arr, low, high);
// 对基准元素左边的子序列进行快速排序
quicksort(arr, low, pivot_pos - 1);
// 对基准元素右边的子序列进行快速排序
quicksort(arr, pivot_pos + 1, high);
}
}
int main() {
int arr[] = {5, 1, 9, 3, 7, 4, 8, 6, 2};
int n = sizeof(arr) / sizeof(int);
quicksort(arr, 0, n - 1);
printf("排序后的数组:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
该代码使用了递归实现快速排序,其中 `partition()` 函数用于分割待排序序列, `quicksort()` 函数用于递归地对分割后的子序列进行排序。