以下是一个基于递归实现的快速排序算法:

void quicksort(int arr[], int left, int right) {
    int i = left, j = right;
    int pivot = arr[(left + right) / 2];

    while (i <= j) {
        while (arr[i] < pivot) {
            i++;
        }

        while (arr[j] > pivot) {
            j--;
        }

        if (i <= j) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }

    if (left < j) {
        quicksort(arr, left, j);
    }

    if (i < right) {
        quicksort(arr, i, right);
    }
}

该算法的基本思路是选取一个枢轴值(pivot),将数组分为两部分,左边的元素小于等于枢轴值,右边的元素大于等于枢轴值,然后递归地对左右两部分进行排序。在实现中,我们通过两个指针 i 和 j 分别从左右两端向中间扫描数组,当找到左边的元素大于枢轴值或者右边的元素小于枢轴值时,就交换这两个元素的位置。最后,当左右两个指针相遇时,就完成了一次分割。

请给我一个c语言的快速排序算法

原文地址: https://www.cveoy.top/t/topic/KNa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录