首页 > 编程笔记

C语言qsort():快速排序

qsort() 是 C语言的一个标准库函数,定义在<stdlib.h>头文件中。

qsort() 函数用于对数组进行快速排序,它是一个通用的排序函数,支持对不同类型的元素进行排序。

qsort() 函数的原型如下:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*));

参数


表:compar() 自定义比较规则
返回值 意义
<0 p1 所指元素位于 p2 所指元素的前面
0 p1 所指元素和 p2 所指元素相等
>0 p1 所指元素位于 p2 所指元素的后面

返回值

无,qsort() 函数没有返回值,函数执行完成后,base 数组中存储的就是有序序列。

【实例】以下是一个使用 qsort() 对整数数组进行排序的 C语言代码示例。
#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int main() {
    int values[] = { 40, 10, 100, 90, 20, 25 };
    int n = sizeof(values) / sizeof(values[0]);

    qsort(values, n, sizeof(int), compare);

    printf("Sorted array: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", values[i]);
    }

    return 0;
}
输出结果为:

Sorted array: 10 20 25 40 90 100

在这个示例中,compare() 函数就是自定义的比较规则,由于 qsort() 使用 void* 指针来处理不同类型的元素,所以compare()函数中需要将指针转换为适当的类型,这个例子中将指针转换为 int*,然后解引用以获取整数值。

推荐阅读