当然可以!以下是一个简单的快速排序算法的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[] = { 10, 7, 8, 9, 1, 5 }; int n = sizeof(arr) / sizeof(arr[0]); printf("原始数组:"); printArray(arr, n); quickSort(arr, 0, n - 1); printf("排序后的数组:"); printArray(arr, n); return 0;}
运行这段代码,你将会看到原始数组和排序后的数组分别被打印出来。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |