当有的数据既 需要 储存 又需要 排序 的时候要用到结构体排序
当一个一个数据需要多个依据多个变量来进行排序时,我们需要定义一个比较方法
比如一个题目大概描述为
给定n个人的生日(即出生年月日)和名字
让你按照年龄从小到大输出这些人的名字(当年份相等比较月份,月份也相等比较日,日相等比较输入顺序,先输入先输出)
众所周知谁出生出生日期小,年龄越大
既需要对这些数据从大到小排列
代码可以这样写(只有结构体,与比较函数)
struct age
{
int y, m, d;
int id;
string op;
}q[110];
bool cmp(age a, age b)
{
if(a.y > b.y) return 1;
else if(a.y < b.y) return 0;
else{
if(a.m > b.m) return 1;
else if(a.m < b.m) return 0;
else {
if(a.d > b.d) return 1;
else if(a.d < b.d) return 0;
else return a.id > b.id;
}
}
}
或这样
struct age
{
int y, m, d;//定义年月日
int id;//输入顺序
string op;//名字
}q[110];
bool cmp(age a, age b)
{
if(a.y != b.y) return a.y > b.y;
else{
if(a.m != b.m) return a.m > b.m;
else {
if(a.d != b.d) return a.d > b.d;
else return a.id < b.id;
}
}
}