排序问题题解大合集
日期问题题解大合集
算法1
我们有多种写法,这里我写一种代码稍微短一点的结构体代码
冒牌、基数等排序都可以,但是交换的时候要一起交换
我们知道,判断年月日是这样的:
年
月
日
因此我们可以得出一下代码:
struct node{
int y,m,d;
}a[1001];
char ch;
bool cmp(node a,node b){
if(a.y!=b.y)return a.y<b.y;
if(a.m!=b.m)return a.m<b.m;
return a.d<b.d;
}
sort(a+1,a+1+n,cmp);
之后我们还要考虑一点:日期格式为“AA/BB/CCCC”
所以在输出的时候,我们一次判断日、月、年
只要比0小,我们就先输出一个0,在依次输出他们
我们就可以得出一下代码:
for(int i=1;i<=n;i++){
if(a[i].d<10)cout<<0;
cout<<a[i].d<<ch;
if(a[i].m<10)cout<<0;
cout<<a[i].m<<ch;
if(a[i].y<10)cout<<0;
cout<<a[i].y<<'\n';
}
据@13816974366大佬提示,还可以这样写:
printf(“%02d”,a[i].d);
……
参考文献
C++ 代码
#include<bits/stdc++.h>
using namespace std;
struct node{
int y,m,d;
}a[1001];
char ch;
bool cmp(node a,node b){
if(a.y!=b.y)return a.y<b.y;
if(a.m!=b.m)return a.m<b.m;
return a.d<b.d;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i].d>>ch>>a[i].m>>ch>>a[i].y;
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
if(a[i].d<10)cout<<0;
cout<<a[i].d<<ch;
if(a[i].m<10)cout<<0;
cout<<a[i].m<<ch;
if(a[i].y<10)cout<<0;
cout<<a[i].y<<'\n';
}
}
$$水体就找2AK$$
addd
输出补0可以printf(“%02d”,a[i].d);//%02d是指如果位数不足2位则补0
蟹蟹大佬%%%
不用谢,我也不是大佬