算法-面试题2万多名员工按年龄排序
来源:互联网 发布:创业软件 复牌 编辑:程序博客网 时间:2024/05/16 04:57
2万多名员工按年龄排序算法,
算法思想是选择排序算法的思想,同时考虑到2万多员工,在某个年龄取值时会有多位员工的实际情况。
思路
第一遍搜索找出,最小年龄为m个minAge, 最大年龄为n个maxAge,这样得到年龄的取值区间[minAge, maxAge]; 第二遍,搜索步进1,全部找出后,放到m个minAge后,依次。。。
C#代码实现,
人员模型为,
public class Person{ public Person(int staffno, int age) { this.staffno = staffno; this.age = age; } //工号 public int staffno {get;set;} //年龄 public int age{get;set;} }
步进为1的排序搜索算法:
static void sort() { if (list == null) return; //找出人员年龄最小的list List<Person> minAgePersons = GetAgePersons(list.Min(per => per.age)); //找出人员年龄最大的list List<Person> maxAgePersons = GetAgePersons(list.Max(per => per.age)); //去掉这些最值 list = list.Except(minAgePersons).Except(maxAgePersons).ToList(); for(int age = minAgePersons[0].age+1;age<maxAgePersons[0].age;age++) { List<Person> agePersons = GetAgePersons(age); minAgePersons.AddRange(agePersons); list.Except(agePersons); } minAgePersons.AddRange(maxAgePersons); list = minAgePersons; } static List<Person> GetAgePersons(int age) { return list.FindAll(person => person.age == age); }
人员年龄不一定步进为1,所以改进sort()之,
static void sort() { if (list == null) return; //找出人员年龄最小的list List<Person> minAgePersons = GetAgePersons(list.Min(per => per.age)); list = list.Except(minAgePersons).ToList(); do { List<Person> tmpminAgePersons = GetAgePersons(list.Min(per => per.age)); minAgePersons.AddRange(tmpminAgePersons); list = list.Except(tmpminAgePersons).ToList(); } while (list.Count > 0); list = minAgePersons; }
源码地址:
下载后,list = list.Except(minAgePersons).ToList()移动到do循环外。(上传代码后才发现的一个小问题)
http://download.csdn.net/detail/daigualu/9782742
2 0
- 算法-面试题2万多名员工按年龄排序
- 剑指Offer面试题8旋转数组的最小数字(二分查找)附带快排和按年龄排序
- 排序算法面试题
- oracle 查询在2010/1/1入职的所有男员工并按年龄排序
- 【IT面试题】排序算法
- 排序算法常见面试题
- 《剑指Offer》面试题:员工的年龄进行排序
- 面试题-----排序算法之选择排序
- 员工部门mysql面试题
- 常见面试题排序算法(二)
- Java基础面试题3(排序算法)
- 经典面试题-- 排序算法(一)
- 十大排序算法面试题
- 排序算法总结及面试题
- 【算法面试题】交换排序问题
- 面试题之常用排序算法02
- PHP算法面试题 排序和查找
- 程序员面试题总结一:排序算法
- 牛客网编程题之小米Git
- spring知识八------事务管理
- 使用命名空间解决名字冲突
- JDK_API
- Android 多主题切换 (theme + style) 及 selector/drawable 无法引用 ?attr 属性的问题
- 算法-面试题2万多名员工按年龄排序
- 事务有哪些特性?spring的事务管理有几种方式实现,如何实现?
- 计161--Problem I: 她胖吗?
- 绿豆沙背景
- 小白学习框架之SpringMVC
- No.1 HelloOpenCL
- Java基础之装箱和拆箱的基本概念及使用
- 嵌入式Linux开发
- CSS3形变——transform与transform-origin画时钟