这虽然直接用sort然后添加一个cmp函数就可以,
#include<bits/stdc++.h>
using namespace std;
struct node//结构体排序
{
string name;
int year;
int month;
int data;
int no;
}a[110];
int n;
bool cmp(node a,node b)
{
if(a.year<b.year)return 1;//先比年
if(a.year>b.year)return 0;
else //a.year==b.year
{
if(a.month<b.month)return 1;//再比月
if(a.month>b.month)return 0;
else
{
if(a.data<b.data)return 1;//再比日
if(a.data>b.data)return 0;
else
{
if(a.no>b.no)return 1;//最后比编号
else return 0;
}
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i].name>>a[i].year>>a[i].month>>a[i].data,a[i].no=i;//输入
sort(a+1,a+n+1,cmp);//快排
for(int i=1;i<=n;i++)cout<<a[i].name<<endl;//输出。
return 0;
}