结构体排序

这篇博客介绍了如何使用结构体和比较函数在C++中进行多条件排序。示例代码展示了如何根据年龄(年、月、日)和输入顺序对一组人的生日进行排序,年龄小的排在前面。比较函数`cmp`比较了年、月、日以及输入顺序,确保了完整的排序逻辑。
摘要由CSDN通过智能技术生成

当有的数据既 需要 储存 又需要 排序 的时候要用到结构体排序

当一个一个数据需要多个依据多个变量来进行排序时,我们需要定义一个比较方法

比如一个题目大概描述为

给定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;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值