117.info
人生若只如初见

c语言快速排序算法实现代码怎么写

下面给出C语言实现快速排序算法的代码:

#include 

void swap(int* a, int* b) {
    int t = *a;
    *a = *b;
    *b = t;
}

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[] = { 7, 2, 1, 6, 8, 5, 3, 4 };
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("Original array:\n");
    printArray(arr, n);
    quickSort(arr, 0, n - 1);
    printf("Sorted array:\n");
    printArray(arr, n);
    return 0;
}

快速排序是一种常用且高效的排序算法,通过选择一个基准元素,将小于基准元素的数都放到基准元素的左边,将大于基准元素的数都放到基准元素的右边,然后按照同样的方法递归地对左右两个子序列进行排序,直到整个序列有序。

以上代码中,swap 函数用于交换两个元素的值,partition 函数用于找到基准元素的正确位置并将数组划分为两部分,quickSort 函数用于递归地对左右两个子序列进行排序,printArray 函数用于打印数组。

main 函数中,首先定义了一个待排序的数组 arr,然后调用 quickSort 函数进行排序,最后调用 printArray 函数打印排序后的数组。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe9bcAzsLAwFTBVM.html

推荐文章

  • c语言gets()的用法是什么

    在C语言中,gets()函数用于从标准输入读取一行字符串,直到遇到换行符为止。它的原型在stdio.h头文件中定义如下:
    char *gets(char *str); 参数str是一个指...

  • C语言getsockopt的用法是什么

    getsockopt函数是用来获取套接字选项的值。该函数的用法如下:
    #include #include int getsockopt(int sockfd, int level, int optname, void *optval, soc...

  • c语言中如何输入一个字符串

    在C语言中,可以使用scanf()函数来输入一个字符串。
    示例代码如下:
    #include int main() { char str[100]; // 声明一个字符数组来存储输入的字符串 p...

  • 怎么用c语言编写新年快乐代码

    使用C语言编写一个简单的新年快乐代码可以是这样的:
    #include int main() { printf("新年快乐!\n"); return 0;
    } 这段代码使用了C语言的标准输入输出...

  • java中integer的作用是什么

    在Java中,Integer是一个包装类,用于将int类型的数据封装为对象。它提供了一系列静态方法和实例方法,用于在基本类型int和Integer对象之间进行转换、比较和操作...

  • springboot过滤器不生效的原因有哪些

    过滤器的顺序不正确:在Spring Boot中,过滤器的顺序是根据过滤器的名称来确定的。如果多个过滤器的名称相同或者没有明确设置顺序,可能会导致过滤器不生效。 过...

  • java中的biginteger有什么用

    BigInteger在Java中的主要用途是处理超过long类型数据范围的整数。它可以处理任意大小的整数,没有范围限制。
    BigInteger提供了一系列的方法来实现整数的加...

  • win10如何让游戏强制窗口化

    要将Win10上的游戏强制窗口化,您可以按照以下步骤操作: 打开游戏,并在游戏窗口中按下Alt + Enter组合键。这将切换游戏窗口至窗口化模式。 如果Alt + Enter组合...