题目: 对一组学生档案进行排序 学生档案如下
排序要求如下: 1.根据入学时间正序 2.根据入学时间倒序 3.女在前男在后显示 4.男在前女在后显示 5.女在前男在后,性别相同根据入学时间正序排序 6.男在前女在后,性别相同根据入学时间倒序排序
要求: 1. 用时不允许超过60分钟,60分钟结束后不管做多少应立即停止。 2. 开发环境为C#.Net 可以是任何形式,网页,控制台程序,Winform都可以。 3. 请使用您最擅长的方法,写出您认为最优秀的代码。
我实现的代码如下:我用的是控制台程序,谈不上擅长吧,只是感觉用控制吧更能节省时间,和体验算法的精炼
[C#] 纯文本查看 复制代码 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
#region 建立学生档案
//学生档案
List<StudentInfo> studentlist = new List<StudentInfo>();
//录入赵阳档案
studentlist.Add(new StudentInfo { NoId = 1, Sex = 1, Name = "赵阳", EntranceTime = DateTime.Now.AddMonths(-3) });
//录入小雪档案
studentlist.Add(new StudentInfo { NoId = 2, Sex = 0, Name = "小雪", EntranceTime = DateTime.Now.AddMonths(-1) });
//录入王刚档案
studentlist.Add(new StudentInfo { NoId = 3, Sex = 1, Name = "王刚", EntranceTime = DateTime.Now.AddYears(-3) });
//录入赵佳佳档案
studentlist.Add(new StudentInfo { NoId = 4, Sex = 0, Name = "赵佳佳", EntranceTime = DateTime.Now.AddDays(-3) });
#endregion
#region 排序
Console.WriteLine("------------------------正序-----------------------------------");
//根据入年年份正序排序
studentlist.Sort((x, y) =>
{
return x.EntranceTime.CompareTo(y.EntranceTime);
});
//打印结果
WriteList(studentlist);
Console.WriteLine("------------------------倒序-----------------------------------");
//反转实现倒序排序
studentlist.Reverse();
//打印结果
WriteList(studentlist);
#endregion
Console.WriteLine("------------------------女在前男在后-----------------------------------");
studentlist.Sort((x, y) =>
{
return x.Sex.CompareTo(y.Sex);
});
//打印结果
WriteList(studentlist);
Console.WriteLine("------------------------男在前女在后-----------------------------------");
studentlist.Reverse();
//打印结果
WriteList(studentlist);
Console.WriteLine("---------------女在前男在后,性别相同安入学时间正序排序-----------------");
studentlist.Sort((x, y) =>
{
int value = x.Sex.CompareTo(y.Sex);
if (value==0)
{
value = x.EntranceTime.CompareTo(y.EntranceTime);
}
return value;
});
//打印结果
WriteList(studentlist);
Console.WriteLine("--------------男在前女在后,性别相同安入学时间倒序排序-----------------");
studentlist.Reverse();
//打印结果
WriteList(studentlist);
}
/// <summary>
/// 打印集合
/// </summary>
/// <param name="studentlist">集合对象</param>
private static void WriteList(List<StudentInfo> studentlist)
{
foreach (StudentInfo item in studentlist)
{
Console.WriteLine(string.Format("学号:{0},姓名:{1},性别:{2},入学时间:{3}", item.NoId, item.Name, item.Sex_Ch, item.EntranceTime.ToString("yyyy-MM-dd HH:mm:ss")));
}
}
}
/// <summary>
/// 学生类
/// </summary>
public class StudentInfo
{
/// <summary>
/// 学号
/// </summary>
public int NoId { get; set; }
/// <summary>
/// 性别:1男,0女
/// </summary>
public int Sex { get; set; }
/// <summary>
/// 返回中文性别
/// </summary>
public string Sex_Ch
{
get
{
if (Sex == 1)
{
return "男";
}
else
{
return "女";
}
}
}
/// <summary>
/// 学生姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 入学时间
/// </summary>
public DateTime EntranceTime { get; set; }
}
}
可以直接下载源码
ConsoleApplication1.rar
(22.59 KB, 下载次数: 19)
|