下面是一个使用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);for (int j = low; j <= high - 1; 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 pi = partition(arr, low, high); // 划分点的索引quickSort(arr, low, pi - 1); // 对左侧部分进行快速排序quickSort(arr, pi + 1, high); // 对右侧部分进行快速排序}}// 打印数组元素void printArray(int arr[], int size) {for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");}int main() {int arr[] = { 64, 25, 12, 22, 11 };int n = sizeof(arr) / sizeof(arr[0]);printf("原始数组:\n");printArray(arr, n);quickSort(arr, 0, n - 1);printf("排序后的数组:\n");printArray(arr, n);return 0;}该代码定义了三个函数:swap()用于交换两个元素的值,partition()用于划分数组为两部分,并返回划分点的索引,quickSort()用于递归地对划分后的两部分进行排序。
在main()函数中,我们创建一个整型数组,调用quickSort()函数进行排序,并打印排序后的结果。