A:ccp12,20,75
B:bpp12,20,75
C:Adp12,20,73
D:Jack1,18,70
E:Appl2,20,70
依次按照成绩、姓名、年龄升序排列。
用java语言实现。
题目给出的答案是:Appl2(20):70|Jack1(18):70|Adp12(20):73|bpp12(20):75|ccp12(20):75
请高手指点,谢谢
public int compare(Object o1, Object o2)
{
Student p1 = (Student) o1;
Student p2 = (Student) o2;
if (p1.getGrade() < p2.getGrade())
{
return 1;
}
else
{
return 0;
}
}
public int compare(Object o1, Object o2)
{
Student p1 = (Student) o1;
Student p2 = (Student) o2;
return p1.getName().compareTo(p2.getName());
}
import java.util.Arrays;
public class Student implements Comparable<Student> {
protected String name;
protected int age;
protected int score;
public Student(String name, int age, int score) {
this.name = name;
this.age = age;
this.score = score;
}
// 排序器
public int compareTo(Student stu) {
if (score!=stu.score)
return score-stu.score;
else {
int c = name.compareTo(stu.name);
return c!=0 ? c : age - stu.age;
}
}
public String toString() {
return name + "(" + age + "):" + score;
}
public static void main(String[] args) {
//初始化数据
Student[] sts = new Student[5];
sts[0] = new Student("ccp12", 20, 75);
sts[1] = new Student("bpp12", 20, 75);
sts[2] = new Student("Adp12", 20, 73);
sts[3] = new Student("Jack1", 18, 70);
sts[4] = new Student("Appl2", 20, 70);
Arrays.sort(sts); //排序
//输出
for (int i=0; i<sts.length; i++)
System.out.print(sts[i]+"|");
}
}
import java.util.Arrays;
import java.util.Comparator;
class OuchiExplorerCompatator implements Comparator
{
@Override
public int compare(Object o1, Object o2)
{
OuchiExplorer e1 = (OuchiExplorer)o1;
OuchiExplorer e2 = (OuchiExplorer)o2;
if (e1.score != e2.score)
{
return e1.score - e2.score;
}
else
{
if (!e1.name.equals(e2.name))
{
return e1.name.compareTo(e2.name);
}
else
{
return e1.age - e2.age;
}
}
}
}
public class OuchiExplorer
{
protected String name;
protected int age;
protected int score;
public OuchiExplorer(String name, int age, int score)
{
this.name = name;
this.age = age;
this.score = score;
}
@Override
public String toString()
{
return String.format("%s(%d):%d", name, age, score);
}
public static void main(String args[])
{
OuchiExplorer[] ors = new OuchiExplorer[5];
ors[0] = new OuchiExplorer("ccp12", 20, 75);
ors[1] = new OuchiExplorer("bpp12", 20, 75);
ors[2] = new OuchiExplorer("Adp12", 20, 73);
ors[3] = new OuchiExplorer("Jack1", 18, 70);
ors[4] = new OuchiExplorer("Appl2", 20, 70);
Arrays.sort(ors, new OuchiExplorerCompatator());
for (OuchiExplorer or : ors)
{
System.out.print(or + "|");
}
}
}
算法思想:在剩余序列中选出最小(或最大)的关键字,和剩余序列的第一个关键字交换位置,依次选择下去(每次扫描结束找出最小的一个元素依次放在前面的位置),直至使整个序列有序。 代码实习: #include<...
在待排序的n个元素中任取一个元素(通常取第一个元素)作为基准,把该元素放入最终位置后,整个数据序列被基准值分割成两个子序列,所有小于基准值的元素放置在前子序列中,所有大于基准值的元素放置在后子序列中,...
当要排序的数字量较大时(1000+),随机数的范围比较小(1-100),排序后的数组会出现个别数字排序错误, public class 基数排序 { public static void main(String[] args) { int[] e = new int[1000]; for(int i...
* 求解栈元素排序问题 * 实验目的: * 掌握栈应用的算法设计 * 实验内容: * 按升序对一个字符栈进行排序,即最小元素位于栈顶。 * 最多只能使用一个额外的栈存放临时数据。 * 并输出栈排序过程。 */ #include &...
其实我能够明白排序的图解,但是这段代码我就不是很能够理解、这两个循环~~~ for(i=0;i;i++) for(j=i+1;j;j++) { if(score[j]>score[i]) {交换两数} } 求高人指教!!!
本博客将详细介绍 NSGA-II算法的实现过程,对比分析约束与非约束条件下NSGA-II实现方法,另后期本博客还将添加基于偏好的 NSGA-II算法分析。...多目标优化算法(一)NSGA-Ⅱ(NSGA2) 作者:晓风wangc...
一个集合存了a,b,c,e和他们各自的属性 属性分别是a=b+c+d,b=e+f ,c=m+n,e=j+k 。。按等级给a、b、c、e排序 这里可以看出a>b>e>c。这题目的是将乱序的原本乱序的集合里的abce最后变为abec的排序
 C语言菜鸟求解~一个数组已经从小到大排序 加入一个数字后按照原来从小到大排序。
如果将n1,n2看做一个整体n的话,则针对n,先对其一半进行排序,另一半排序,然后整体再次排序。符合我们一般的做事习惯,将大问题都分解为小问题,针对小问题逐一解决,最终解决掉整个问题,最先解决的是小问题,...
程序代码: #include"sqstack.cpp" void StackSort(SqStack *&st) { SqStack *tmpst; InitStack(tmpst); ElemType e,e1; while(!StackEmpty(st)) { Pop(st,e); printf(" st:出栈%c =>",e);...StackEmpty
背包问题是给定n个重量为{w1, w2,… ,wn}、价值为{v1, v2, … ,vn}的物品和一个容量为C的背包,求这些物品中的一个最有价值的子集,并且要能够装到背包中每次从物品集合中选择单位重量价值最大的物品,如果其重量...
有⼀个表示⼯程的有向图中, ⽤顶点表示活动, 用弧表示活动之间的优先关系,这样有向图为顶点表示活动的⽹,我们称为AOV网(Activity On Vertex Network). 如下图1.1.1所示: 图中活动的有限集为: C1->C2->C3-...
多目标优化问题的算法及其求解 一、多目标优化问题 多目标优化是在现实各个领域中都普遍存在的问题,每个目标不可能都同时达到最优,必须各有权重。但是,究竟要怎样分配这样的权重,这已经成为人们...
最优装载问题可用贪心算法求解。采用重量最轻者先装的贪心选择策略,可产生最优装载问题的最优解。 物品i 1 2 3 4 5 重量w[i] 30 24 10 35 40 //Sort函数的目的是将集装箱的序号按照集装箱重量从小到大...
题目很简单,对一个非递减数列进行一次旋转,对得到的旋转后的数组输出最小的元素 分析一下:如果原始非递减序列没有发生旋转那么返回第一个元素就行了,如果发生了旋转那么返回第一次出现A[i]>A[[i+1]位置的A[i+...
贺老师教学链接 C语言及程序设计进阶 本课讲解快速排序实现#include void quicksort(int data[],int first,int last) { int i, j, t, base; if (first>last) return; base=data[first]; /*用首元素作为基数*/ i...
给定N个整数Ai以及一个正整数C,问其中有多少对i、j满足Ai-Aj=C 2.输入描述: 第1行输入两个空格隔开的整数N和C,第2~N+1行每行包含一个整数Ai 3.输出描述: 输出一个数表示答案 4.输入样例: 5 3 2 1 4 2 5 5....
有一个背包,背包容量是M=150。有7个物品,物品可以分割成任意大小。 要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。 思路 具有最优子结构性质和贪心选择性质。只要是所有物品的总重量大于背包容纳量...
/*分治法——归并排序 ...(2)求解子问题:分别对这两个子序列进行排序,得到两个有序子序列; (3)合并:将这两个有序子序列合并成一个有序序列。 */ public class MergeSort { /** *
对于每一个物品i,对于该物品只有选与不选2个决策,总共有n个物品,可以顺序依次考虑每个物品,这样就形成了一棵解空间树: 基本思想就是遍历这棵树,以枚举所有情况,最后进行判断,如果重量不超过背包容量,且价值...
数字问题排序
简介 PSO(粒子群算法)是群智能算法的一种,其他的群智能算法还有蚁群算法,遗传算法等。其他的智能算法还有模拟退火。之前看过一段时间的PSO,商务智能... TSP问题想必大家再熟悉不过了,它是一个NP-hard...
贪心算法求解 TSP 问题得到局部最优解的具体实现,数据集来自 TSPLIB 的 att48 数据集。旅行商问题即 TSP(Traveling Salesman Problem),又称为货郎担问题,是数学领域中著名问题之一。
本实验要求基于算法设计与分析的一般过程(即待求解问题的描述、算法设计、算法描述、算法正确性证明、算法分析、算法实现与测试),使用贪心法求解会场安排问题以及利用分治法的循环日程表算法,以期从实践中理解...
有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求三个实根。。 输入...
题目:请编写一个程序,按升序对栈进行排序,要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。
接下来的三个高级排序算法,是在实践中...它的基本思想是,选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据...
深度优先搜索下的拓扑排序
【问题描述】给定N个整数Ai以及一个正整数C,问其中有多少对i、j满足Ai-Aj=C。 输入描述:第1行输入两个空格隔开的整数N和C,第2~N+1行每行包含一个整数Ai。 输出描述:输出一个数表示答案。 输入样例: 5 3 2 ...
有n个工件,j1, j2, …, jn, 每个工件有一个给定的最小加工时间pj , 以及一个权重wj 1j, 同样的结束时间Cj = sj + p(B),j∈B, 这里p(B)=max{pj} j∈B。 从一批工件开始加工到结束中间不允许中断。 请问:如何...