#include <stdio.h>
typedef struct date
{
int year;
int month;
int day;
}date;
int ruleyear(int lyear,int ryear)
{
return (ryear<lyear);
}
/*int ruleyear2(int lyear,int ryear)
{
return (ryear>lyear);
}*/
int rulemonth(int lmonth,int rmonth)
{
return (rmonth<lmonth);
}
int ruleday(int lday,int rday)
{
return (lday>rday);
}
#define swap(x,y) {date t=x;x=y;y=t;}
void sort(date *pd,int n,int (*q)(int,int))
{
int i,j;
int l,r;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(q==&ruleyear)
{
if(q((pd+i)->year , (pd+j)->year))//按年排序
swap(*(pd+i),*(pd+j));
if((pd+i)->year==(pd+j)->year)
{
if(q((pd+i)->month , (pd+j)->month))//如果同年,按月排序
swap(*(pd+i),*(pd+j));
if((pd+i)->month ==(pd+j)->month)
if(q((pd+i)->day , (pd+j)->day))//如果同月,按日排序
swap(*(pd+i),*(pd+j));
}
}
/*if(q==&rulemonth)
{
if(q((pd+i)->month , (pd+j)->month))
swap(*(pd+i),*(pd+j));
}*/
}
}
void show(date *pd,int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d-%d-%d\n",pd[i].year,pd[i].month,pd[i].day);
}
}
int main()
{
date d[5]={{1992,1,22},{2011,3,5},{1992,10,4},{2014,3,1},{2014,3,21}};
sort(d,5,ruleyear);
show(d,5);
return 0;
}
根据传入的排序规则对日期进行排序
最新推荐文章于 2022-12-21 11:15:13 发布