qsort是一个需要配合compare函数来使用的,用来排序的函数。
使用顺序为
qsort(待排序数组首地址,数组中待排序元素数量 ,各元素的占用空间大小 , 指向函数的指针);
例如
qsort(stu1,size1,sizeof(ELEMTYPE),cmp);
(stu1是数组,size是数量,cmp是个函数,compare函数)
compare函数定义时有很多需要注意的地方,例如
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100000
struct Student{
int de,ca;
long sdi;
}stu1[MAXSIZE],stu2[MAXSIZE],stu3[MAXSIZE],stu4[MAXSIZE];
typedef struct Student ELEMTYPE;
int cmp(const void *A,const void *B)
{
ELEMTYPE *a=(ELEMTYPE *)A;
ELEMTYPE *b=(ELEMTYPE *)B;
int d1=a->de;
int d2=b->de;
int c1=a->ca;
int c2=b->ca;
int id1=a->sdi,id2=b->sdi;
int to1=d1+c1,to2=d2+c2;
if(to1!=to2)
{
return to2-to1;
}
else if(d1!=d2)
return d2-d1;
else return id1-id2;
}
它的cmp函数的形参必须强制转换成要求的格式才能进行使用,并且,从小到大A-B,反过来B-A。