qsort(参数1,参数2,参数3,参数4);
参数1是需要排序的数组中某个元素的地址,从这个元素开始排序,参数2是要排序的元素的个数,参数3是每个元素占多少个字节的内存,参数4是按什么规则排序。
对不同的数组排序,前三个参数大同小异,但是参数4有所不同。
int型数组
int cmp_int(const void *a,const void *b)
{
return (*(int*)a>*(int*)b)?1:-1;
}
升序排列
int cmp_int(const void *a,const void *b)
{
return (*(int*)a>*(int*)b)?-1:1;
}
降序排列
double型数组
int cmp_double(const void *a,const void *b)
{
return (*(double*)a>*(double*)b)?1:-1;
}
升序排列
int cmp_double(const void *a,const void *b)
{
return (*(double*)a>\(double*)b)?-1:1;
}
降序排列
字符型数组
int cmp_char(const void *a,const void *b)
{
return (*(char*)a>*(char*)b)?1:-1;
}
按字典顺序排列,即按ASCLL升序排列。
结构型数组排列
typedef struct
{
int num;
}node;
int cmp_struct(const void *a,const void *b)
{
node *aa=(node*)a>*bb=(node*)b;
return ((aa->num)>(bb->num))?1:-1;
}
按num升序排列
typedef struct
{
int num;
}node;
int cmp_struct(const void *a,const void *b)
{
node *aa=(node*)a,*bb=(node*)b;
return ((aa->num)>(bb->num))?-1:1;
}
按num降序排列