#include<stdio.h>

// 函数声明
void quickSort(int[], int, int);
int partition(int[], int, int);

// 主函数
int main()
{
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("排序前的数组:\n");
    displayArray(arr, n);
    
    quickSort(arr, 0, n - 1);
    
    printf("排序后的数组:\n");
    displayArray(arr, n);
    
    return 0;
}

// 快速排序算法实现
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);
    }
}

// 划分函数,返回基准元素的位置
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 swap(int* a, int* b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

// 显示数组元素
void displayArray(int arr[], int n)
{
    for (int i = 0; i< n; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
}
这是一个使用 C 语言实现快速排序算法的示例。快速排序是一种常用的排序算法,它通过选择一个基准元素,将数组划分为两部分,并递归地对这两部分进行排序。时间复杂度为 O(nlogn)。 上述代码中,首先定义了一个快速排序函数 `quickSort()`,它的参数包括待排序数组、低位索引和高位索引。在 `quickSort()` 函数内部,根据基准元素的位置,将数组划分为两部分,并对两部分分别进行快速排序。 划分函数 `partition()` 用于确定基准元素的位置,并将小于基准元素的元素移到其左侧,大于基准元素的元素移到其右侧。 交换函数 `swap()` 用于交换两个元素的值。在快速排序过程中,多次使用该函数进行元素交换。 主函数中定义待排序的数组 `arr`,并调用 `quickSort()` 函数完成排序,并通过 `displayArray()` 函数将排序后的数组打印输出。 该示例展示了如何使用 C 语言实现一个高效的快速排序算法。通过理解和掌握该算法,开发者能够在实际工作中更好地利用 C 语言进行排序相关的编程任务。