登录后台

页面导航

qsort是stdlib.h中的函数,因此使用前需要声明:#include <stdlib.h>

qsort函数包含四个参数,分别是:

1.数组名

2.元素个数(从前往后计算)

3.数组元素所占字节(int,double,char等所占字节)

4.排序原则(递增,递减,奇偶交叉等)

int cmp(const void *a,const void *b) {
    return *(int*)a-*(int*)b;
}
qsort(num, n, sizeof(int), cmp);

需要定义一个函数cmp,通过cmp返回的参数来确定排序规则,需要注意的是:cmp函数的参数需要以const void a,const void b的形式来定义,表示a和b的类型是未确定的,在return中进行强制类型转换。(int)a-(int)b表示以递增顺序,若想以递减只需将a和b换位。

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

// 浮点数比较存在精度丢失的问题,所以需要三元表达式来返回1或-1
int cmp(const void *a,const void *b) {
    return *(double*)a>*(double*)b?1:-1;
}

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

struct node{
    int i;
    double j;
    char k;
};
int cmp(const void *a,const void *b) {
    return (*(node*)a).i-(*(node*)b).i;
}
博主已关闭本页面的评论功能