文件排序

文件排序

问题描述
操作系统中在查找文件时会按照某个规则对文件排序,例如下图为按照文件修改日期逆序排序(最后修改的排在最前面)。
在这里插入图片描述
但目前操作系统不支持同时按照多个字段进行排序。现在请你写一个程序能够同时按照修改日期和文件大小对文件进行排序,排序规则为:

  1. 日期优先,最后修改的排在前面
  2. 当修改日期相同时,大的文件排在前面

输入说明
第一行为一个数字n,n 表示共有n 个待排序的文件, 1≤ n≤ 100。
接下来是n 行,每行包含一个文件的修改日期和文件大小,这两个字段之间用空格分隔。 文件修改日期包含年、月、日,表示年、月、日的整数之间用“/”分隔,格式为“年/月/日”。年份的数值在1960-2018 之间;月份的数值在1-12 之间;日的数值在1-31 之间。 文件大小是一个不超过 100000000 的整数。
输入数据中没有完全相同的日期和文件大小。

输出说明
将输入数据按题目描述的规则排序后输出,每行输出一个文件的修改日期和文件大小。

输入样例

8
2018/1/8 1024
2012/10/31 256
2014/10/29 300
2012/10/31 457
2014/10/27 512
2011/10/27 95
2014/11/3 1102
2017/11/24 1535

输出样例

2018/1/8 1024
2017/11/24 1535
2014/11/3 1102
2014/10/29 300
2014/10/27 512
2012/10/31 457
2012/10/31 256
2011/10/27 95

#include<stdio.h>
struct document
{
	int year;
	int month;
	int day;
	int size;
};

int main()
{
/**************************函数参数********************************************				
n					文件个数
struct document
{
	int year;		文件年份
	int month;		文件月份
	int day;		文件日期
	int size;		文件大小
};
i,j					临时变量 
*******************************************************************************/
	/*变量的定义和输入*/
	int n;
	int i,j;
	scanf("%d",&n);
	struct document doc[n],t;
	for(i=0;i<n;i++)
	scanf("%d/%d/%d %d",&doc[i].year,&doc[i].month,&doc[i].day,&doc[i].size);
	/*比较大小*/
	for(i=0;i<n-1;i++)
	for(j=0;j<n-1-i;j++)
	{
		if(doc[j].year<doc[j+1].year)
		{
			t=doc[j];
			doc[j]=doc[j+1];
			doc[j+1]=t;
		}
		else if(doc[j].year==doc[j+1].year)
		{
			if(doc[j].month<doc[j+1].month)
			{
				t=doc[j];
				doc[j]=doc[j+1];
				doc[j+1]=t;
			}
			else if(doc[j].month==doc[j+1].month)
			{
				if(doc[j].day<doc[j+1].day)
				{
					t=doc[j];
					doc[j]=doc[j+1];
					doc[j+1]=t;
				}
				else if(doc[j].day==doc[j+1].day)
				{
					if(doc[j].size<doc[j+1].size)
					{
						t=doc[j];
						doc[j]=doc[j+1];
						doc[j+1]=t;
					}
				}
			}
		}
	}
	
	/*打印*/
	for(i=0;i<n;i++)
	printf("%d/%d/%d %d\n",doc[i].year,doc[i].month,doc[i].day,doc[i].size);
	
	return 0;
  }  
   @ RoboMaster!十兮

写出以上代码并不困难,但是这里我尝试了很久,想过利用C++的重装载特性,将结构体各元素之间内部比较大小排序,然而最后失败了 【菜不是我的错,等我厉害了,再回来想这个问题 】,奈何这算是作业吧,我只能写一个比较傻的程序。哈哈哈,现在程序写的像个傻子一样,要是结构体元素多了,比较起来就十分复杂了。等我寒假或者啥时候有灵感的时候就是我再次尝试解决这个问题的时候了……
如果大家有啥好的想法,尽管在评论区给小编留言喔……老营销了,哈哈哈

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页