首先是结构体定义:
typedef struct node{
char a;
int b;
int c;
}student;
c语言常用:
int cmp(const void *a,const void *b)
{
student pa=*(student*)a,pb=*(student*)b;
if(pa.a!=pb.a) return pa.a-pb.a;//升序
else return pb.b-pa.b;//降序
}
返回必须是int类型!大于0表示交换,小于0不交换
主函数可用qsort排序
cpp排序函数:
bool cmp(const student &a,const student &b)
{
if(a.b!=b.b) return a.b>b.b;//降序
return a.c<b.c;//升序
}
然后用sort(array,array+n,cmp)排序,注意sort对非结构体排序都是升序!但是对结构体必须要定义cmp,或者在定义结构体的时候重载小于号
注意:cpp里数组排序最好不要用char,用string很方便!