http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 3131|回复: 2

[综合] 一个经典的面试题:对一组学生档案进行排序

[复制链接]
发表于 2017-7-18 11:34:57 | 显示全部楼层 |阅读模式
题目:  对一组学生档案进行排序
学生档案如下
学号
性别
姓名
入学时间
1
赵阳
当前时间三小时前
2
小雪
当前时间一个月前
3
王刚
当前时间三年前
4
赵佳佳
当前时间三天前

排序要求如下:
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)


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2017-7-18 11:35:45 | 显示全部楼层
有兴趣的朋友,可以试试看
我用时为27分钟

QQ截图20170718115525.png

发表于 2017-7-19 09:21:07 | 显示全部楼层
强烈支持楼主ing……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-24 11:20

© 2014-2021

快速回复 返回顶部 返回列表