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;
}