当前位置: C语言 -- 标准库 -- <stdlib.h> -- qsort

qsort函数


概要:
#include <stdlib.h>
void qsort(void *base, size_t nmemb, size_t size,
     int (*compar)(const void *, const void *));

描述:

该函数对数组元素排序。参数base指向排序数组的初始元素,参数nmemb指定排序数组的元素数目,参数size指定单个数组元素的大小,参数compar指向比较函数,该比较函数比较两个对象的大小;该比较函数会被qsort函数反复调用,用以比较数组元素;数组元素根据参数compar指向的比较函数按升序排序。


参数compar指向比较函数的函数原型如下所示:

int (*compar)(const void *x, const void *y);

如果参数x指向对象分别小于、等于或者大于参数y指向对象,比较函数返回一个小于、等于或者大于0的整数。qsort函数根据比较函数的返回值对数组元素进行排序,具体规则如下所示:

返回值 含义
大于0 参数x指向的元素将排在参数y指向的元素之后。
小于0 参数x指向的元素将排在参数y指向的元素之前。
等于0 参数x指向的元素与参数y指向的元素相等。

如果两个元素相等,它们在结果排序数组中的顺序ISO/IEC 9899:2018标准未作明确说明。


ISO/IEC 9899:2018标准定义了该函数的安全版本qsort_s


参数:
void *base

指向排序数组初始元素的指针。

size_t nmemb

数组的元素数目。

size_t size

以字节形式表示的单个数组元素的大小。

int (*compar)(const void *, const void *)

指向比较函数的指针。


返回值:

无。


范例:
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
/*函数qsort范例*/

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

#define LENGTH 5

int funcCompare(const void *x, const void *y)
{
    return (*(int *)x-*(int *)y);
}

int main(void)
{
    int number[LENGTH] = {10, -5, 0, 25, 3};

    qsort(number, LENGTH, sizeof(int), funcCompare);
    for(int i=0; i<LENGTH; ++i)
    {
        printf("%d ", number[i]);
    }

    return 0;
}


输出:

-5 0 3 10 25


相关内容:
bsearch 搜索匹配的数组元素的函数。