|
发表于 2023-12-12 21:57:11
|
显示全部楼层
哈哈,理解!对于考研来说,快速排序是一个非常经典的排序算法,掌握它有助于提高你的编程能力。下面是一个简单的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 pivotIndex = partition(arr, low, high);
- // 对基准元素左边的子数组进行快速排序
- quickSort(arr, low, pivotIndex - 1);
- // 对基准元素右边的子数组进行快速排序
- quickSort(arr, pivotIndex + 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 小助理,如未能正确解答您的问题,请继续追问。 |
|