三个整数的排序、成绩排序、成绩排序2

三个整数的排序

题目

问题描述

  输入三个数,比较其大小,并从大到小输出。

输入格式

  一行三个整数。

输出格式

  一行三个整数,从大到小排序。

样例输入

33 88 77

样例输出

88 77 33
package 排序;

import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;

public class 三个整数的排列 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int[] a=new int[3];
		for(int i=0;i<3;i++){
			a[i]=sc.nextInt();
		}
		Arrays.sort(a);
		for(int i=2;i>=0;i--){
			System.out.print(a[i]+" ");
		}
	}

}

成绩排序

问题描述

  给出n个学生的成绩,将这些学生按成绩排序,
   排序规则,优先考虑数学成绩,高的在前;数学相同,英语高的在前;数学英语都相同,语文高的在前;三门都相同,学号小的在前

输入格式

  第一行一个正整数n,表示学生人数
   接下来n行每行30~100的整数,第i行表示学号为i的学生的数学、英语、语文成绩

输出格式

  输出n行,每行表示一个学生的数学成绩、英语成绩、语文成绩、学号
   按排序后的顺序输出

样例输入

2
 1 2 3
 2 3 4

样例输出

2 3 4 2
 1 2 3 1

数据规模和约定

  n≤100

代码

package 排序;

import java.util.Arrays;
import java.util.Scanner;

public class 成绩排序 {
	public static class Students implements Comparable{
		int Math;
		int English;
		int Chinese;
		int Num;
		
		public String toString(){
			return this.Math+" "+this.English+" "+this.Chinese+" "+this.Num;
		}
		
		public int compareTo(Object o){
			Students s=(Students) o;
			if(this.Math>s.Math)
				return 1;
			else if(this.Math==s.Math&&this.English>s.English)
				return 1;
			else if(this.Math==s.Math&&this.English==s.English&&this.Chinese>s.Chinese)
				return 1;
			else if(this.Math==s.Math&&this.English==s.English&&this.Chinese==s.Chinese&&this.Num<s.Num)
				return 1;
			return -1;
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		Students [] students=new Students[n];
		for(int i=0;i<n;i++){
			Students stu=new Students();
			stu.Math=sc.nextInt();
			stu.English=sc.nextInt();
			stu.Chinese=sc.nextInt();
			stu.Num=i+1;
			students[i]=stu;
		}
		Arrays.sort(students);
		for(int i=n-1;i>=0;i--)
			System.out.println(students[i].toString());
	}

}

成绩排序2

问题描述

  给出n个学生的成绩,将这些学生按成绩排序,排序规则:总分高的在前;总分相同,数学成绩高的在前;总分与数学相同,英语高的在前;总分数学英语都相同,学号小的在前

输入格式

  第一行一个正整数n,表示学生人数
   接下来n行每行30~100的整数,第i行表示学号为i的学生的数学、英语、语文成绩

输出格式

  输出n行,每行表示一个学生的数学成绩、英语成绩、语文成绩、学号
   按排序后的顺序输出

样例输入

2
 1 2 3
 2 3 4

样例输出

2 3 4 2
 1 2 3 1

数据规模和约定

  n≤100

成绩排名

问题描述

  小明刚经过了一次数学考试,老师由于忙碌忘记排名了,于是老师把这个光荣的任务交给了小明,小明则找到了聪明的你,希望你能帮他解决这个问题。

输入格式

  第一行包含一个正整数N,表示有个人参加了考试。接下来N行,每行有一个字符串和一个正整数,分别表示人名和对应的成绩,用一个空格分隔。

输出格式

  输出一共有N行,每行一个字符串,第i行的字符串表示成绩从高到低排在第i位的人的名字,若分数一样则按人名的字典序顺序从小到大。

样例输入

3
 aaa 47
 bbb 90
 ccc 70

样例输出

bbb
 ccc
 aaa 【数据规模和约定】
 人数<=100,分数<=100,人名仅包含小写字母。

代码

package 排序;

import java.util.Arrays;
import java.util.Scanner;

public class 成绩排序2 {
	public static class Students implements Comparable{
		int Sum;
		int Math;
		int English;
		int Chinese;
		int Num;
		public String toString(){
			return this.Math+" "+this.English+" "+this.Chinese+" "+this.Num;
		}
		public int compareTo(Object o){
			Students s=(Students) o;
			if(this.Sum>s.Sum)
				return 1;
			else if(this.Sum==s.Sum&&this.Math>s.Math)
				return 1;
			else if(this.Sum==s.Sum&&this.Math==s.Math&&this.English>s.English)
				return 1;
			else if(this.Sum==s.Sum&&this.Math==s.Math&&this.English==s.English&&this.Chinese>s.Chinese)
				return 1;
			else if(this.Sum==s.Sum&&this.Math==s.Math&&this.English==s.English&&this.Chinese==s.Chinese&&this.Num<s.Num)
				return 1;
			return -1;
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		Students [] students=new Students[n];
		for(int i=0;i<n;i++){
			Students stu=new Students();
			stu.Math=sc.nextInt();
			stu.English=sc.nextInt();
			stu.Chinese=sc.nextInt();
			stu.Sum=stu.Math+stu.English+stu.Chinese;
			stu.Num=i+1;
			students[i]=stu;			
		}
		Arrays.sort(students);
		for(int i=n-1;i>=0;i--)
			System.out.println(students[i].toString());
	}

}

发布了342 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44522477/article/details/105452547