C中qsort快速排序使用实例


在C语言中,`qsort` 是标准库函数之一,用于对数组进行快速排序。它定义在 `` 头文件中。使用 `qsort` 时,你需要提供一个比较函数来指定元素之间的排序规则。

下面是一个使用 `qsort` 对整数数组进行排序的实例:


#include <stdio.h>
#include <stdlib.h>

// 比较函数,用于qsort
int compare(const void *a, const void *b) {
    // 强制类型转换,因为void指针不能直接解引用
    int arg1 = *(const int*)a;
    int arg2 = *(const int*)b;

    // 升序排序
    if (arg1 < arg2) return -1;
    if (arg1 > arg2) return 1;
    return 0;
}

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: \n");
    for(int i = 0; i < n; i++) {
        printf("%d ", values[i]);
    }
    printf("\n");

    return 0;
}

在这个例子中,`compare` 函数是用来比较两个整数元素。`qsort` 函数接受四个参数:要排序的数组、数组中元素的数量、每个元素的大小(使用 `sizeof(int)` 表示整型的大小),以及比较函数 `compare` 的地址。排序完成后,数组 `values` 中的元素将按照升序排列。

请注意,`qsort` 是一个高度优化的排序算法,适用于各种类型的数据排序,只要你能提供合适的比较函数。