A1030. 球队排名
问题描述
计算机系学生会体育部组织了一次“酒井杯”足球联赛,有若干支球队参加,现在联赛已经圆满落幕,各队的积分、净胜球、进球数已经计算出来了,现在要你编写一个程序计算各支球队的排名,然后按照名次从高到低的顺序将各个球队的名字打印出来。
球队的规则如下:
1、先比较积分,积分高者名次在前;
2、如果积分相同则比较净胜球,净胜球多者名次在前;
3、如果积分、净胜球都相同则比较进球数,进球数多者名次在前;
4、对于积分、净胜球和进球数都一样的球队,根据他们的名称按照字典顺序排列。
现在假设各个球队的名称都是由大写英文字母组成,并且没有重名的球队。
球队的规则如下:
1、先比较积分,积分高者名次在前;
2、如果积分相同则比较净胜球,净胜球多者名次在前;
3、如果积分、净胜球都相同则比较进球数,进球数多者名次在前;
4、对于积分、净胜球和进球数都一样的球队,根据他们的名称按照字典顺序排列。
现在假设各个球队的名称都是由大写英文字母组成,并且没有重名的球队。
输入格式
第一行是一个正整数N(2<=N<=10),代表球队的数目
接下来有N行,每一行均包括一个字符串和3个整数,其中字符串代表球队的名称,长度在2与20之间,3个整数依次为球队的积分,净胜球和进球数,其中积分和进球数是0到100间的整数,净胜球的绝对值小于100。
接下来有N行,每一行均包括一个字符串和3个整数,其中字符串代表球队的名称,长度在2与20之间,3个整数依次为球队的积分,净胜球和进球数,其中积分和进球数是0到100间的整数,净胜球的绝对值小于100。
输出格式
共N行,每行输出一个字符串,即球队的名称。
样例输入
4 ACMILAN 5 1 5 SCHALKE 5 1 7 FENERBAHCE 4 -1 7 PSV 7 -1 2
样例输出
PSV
SCHALKE
ACMILAN
FENERBAHCE
package www.tsinsen.com; import java.util.Scanner; public class A1030 { public static void main(String[] args) { // TODO Auto-generated method stub Scanner scan=new Scanner(System.in); int n=scan.nextInt(); team[] teams=new team[n]; for(int i=0;i<n;i++) { teams[i]=new team(); teams[i].name=scan.next(); teams[i].jifen=scan.nextInt(); teams[i].jingshengqiu=scan.nextInt(); teams[i].jinqiu=scan.nextInt(); } //插入排序 for(int i=1;i<teams.length;i++) { for(int j=i;j>0;j--) { if(compare(teams[j],teams[j-1])==1) { team temp=teams[j-1]; teams[j-1]=teams[j]; teams[j]=temp; } else { break; } } } for(int i=0;i<teams.length;i++) { System.out.println(teams[i].name); } } public static int compare(team t1,team t2) { if(t1.jifen>t2.jifen) { return 1; }else if(t1.jifen<t2.jifen) { return -1; }else { if(t1.jingshengqiu>t2.jingshengqiu) { return 1; }else if(t1.jingshengqiu<t2.jingshengqiu) { return -1; }else { if(t1.jinqiu>t2.jinqiu) { return 1; }else if(t1.jinqiu<t2.jinqiu) { return -1; }else { if(t1.name.compareTo(t2.name)>0) { return -1; }else { return 1; } } } } } public static class team { String name; int jifen; int jingshengqiu; int jinqiu; } }