给定的一组成员(机构、人员(带岗位))
1 基础排序的实现: 机构 部门 岗位 用户实体都要实现Comparator接口
2 排序算法 要排序的类实现compareable 接口
public class AgOpusGroupMemberComparable implements Comparator{
public int compare(Object o1,Object o2) {
if(! o1 instanceof AgOpusGroupMember || !o2 instanceof AgOpusGroupMember)
throw new Exception("对象类型错误,必须都为AgOpusGroupMember");
AgOpusGroupMember m1=(AgOpusGroupMember)o1;
AgOpusGroupMember m2=(AgOpusGroupMember)o2;
//具体排序算法
//先取得两个成员在领导班子和成员中的排序
Long cityLeaderOrder1 = getCityLeaderOrder(m1);
Long cityLeaderOrder2 = getCityLeaderOrder(m2);
if(cityLeaderOrder1 != null && cityLeaderOrder2 != null)
return cityLeaderOrder1.compareTo(cityLeaderOrder2);
if(cityLeaderOrder1 != null && cityLeaderOrder2 == null)
return 1;
if(cityLeaderOrder1 == null && cityLeaderOrder2 != null)
return 0;
//如果都不是领导班子中的人
if(cityLeaderOrder1 == null && cityLeaderOrder2 == null){
//再看机构
AgOpusOrgForm org1 = getOrg(m1);
AgOpusOrgForm org2 = getOrg(m2);
//取得类型
Long memberType1 = getType(m1);
Long memberType2 = getType(m2);
//先按机构排序
if(org1 != org2 )
return org1.compareTo(org2);
else{
//如果是同一个机构
if(memberType1 == 1 && memberType1 ==2) {
return 1; //机构排在前
}else{
//看该人员是否为机构内重要人员
Long importPersonNo1 = getImportPersonNo(m1);
Long importPersonNO2 = getImportPersonNo(m2);
if(importPersonNo1 != null && importPersonNo2 != null)
return importPersonNo1.compareTo(importPersonNo2);
if(importPersonNo1 == null && importPersonNo2 != null)
return -1;
if(importPersonNo1 != null && importPersonNo2 == null)
return 1;
//如果都不是机构内重要人员 看部门顺序
if(importPersonNo1 == null && importPersonNo2 == null){
AgOpusDepartMent dept1= getDept(m1);
AgOpusDepartMent dept2= getDept(m2);
if(dept1 != dept2 )
return dept.compareTo(dept2);
//如果部门相同 则比较部门内的岗位顺序
AgOpusPosition pos1= getPos(m1);
AgOpusPosition pos2= getPos(m2);
return pos1.compareTo(pos2);
}
}
}
}
}
3 调用 Collections.sort();
Collections.sort(List<AgOpusGroupMember>,AgOpusGroupMemberComparable);
分享到:
相关推荐
常用排序算法的动态演示系统的开发,演示冒泡排序法、快速排序法、直接插入排序法、折半插入排序法、树形选择排序法
基于Python2.7实现的LeaderRank复杂网络节点排序算法,算法输出排序后每个节点的重要性值 参考论文:2011-Leaders in Social Networks, the Delicious
排序算法实现与演示系统任务说明书,提供操作:选择排序、冒泡排序、插入排序、基数排序、快速排序、归并排序。
各种内部排序算法的时间复杂度分析结果只给出了算法执行时间的阶,或大概执行时间。试通过随机的数据比较各算法的关键字比较次数和关键字移动次数,以取得直观感受。 二.基本要求 (1)对以下10种常用的内部排序...
能选择六种排序任意一个排序算法进行排序,并输出结果 1:自定义一个大小和元素的数组。 2:有六种排序算法供选择。 3:用所选择的算法进行排序 4:能循环使用。
该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...
最快的排序算法 C语言最简单的排序算法冒泡排序并返回排序前索引序号,排序算法数据结构
参考资料-【排序法考核工具】岗位评价中排序法的应用.zip
桶式排序法桶式排序法桶式排序法桶式排序法
拓扑排序算法思想:a.在有向图中任选一个没有前趋的顶点输出;b.从图中删除该顶点和所有以它为尾的弧;c.重复上述a、b,直到全部顶点都已输出,此时,顶点输出序列即为一个拓朴有序序列;或者直到图中没有无前趋的...
合并排序算法和快速排序算法采用了采用分治法、递归的方法,将时间复杂度降为O(nlogn)。在本次实验中将数据量提到5万的时候,该类算法运行时间仍在几毫秒左右,而上面的3种算法运行时间已经到达十几秒左右,效率...
js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js排序算法动态显示js...
常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结常用排序算法总结
排序系统排序系统排序系统排序系统排序系统排序系统排序系统排序系统排序系统排序系统
排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档排序算法归档
陕西科技大学学校的排序算法实验,最近小咲写的: 一、实验目的 1. 熟练运用冒泡排序、选择排序、插入排序、希尔排序、快速排序、合并排序、堆排序等七种常见的内排序算法 2. 使用不同的数据结合计算各种算法的运行...
排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中 进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序 记录,在排序过程中需要...
排序算法排序算法排序算法排序算法排序算法排序算法排序算法
2、单处理机上快速排序算法 3、快速排序算法的性能 4、快速排序算法并行化 5、描述了使用2m个处理器完成对n个输入数据排序的并行算法。 6、在最优的情况下并行算法形成一个高度为logn的排序树 7、完成快速排序的...
希尔排序,冒泡排序、快速排序递归排序,快速排序非递归排序,快速排序改进算法