成绩排序
题目描述
查找和排序
题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
例示:
jack 70
peter 96
Tom 70
smith 67
从高到低 成绩
peter 96
jack 70
Tom 70
smith 67
从低到高
smith 67
Tom 70
jack 70
peter 96
输入描述:
输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开
输出描述:
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开
我的代码:
import java.util.*;
import java.lang.*;
public class Main{
public void main (String[] args){
System.out.println("请输入人数:");
Scanner input=new Scanner(System.in);
int n=input.nextInt();
System.out.println("请输排序方式,0或1:");
int sort=input.nextInt();
if(n==0){
return;
}else{
Person[] persons=new Person[100];
for(int i=0;i<n;i++){
String str=input.nextLine();
String[] ss=str.split(" ");
int a=Integer.parseInt(ss[1]);
persons[i].set(ss[0],a);
}
Person temp=new Person();
if(sort==1){
for(int i=0;i<n-1;i++){
for(int j=0;j<n-1-i;j++){
if(persons[j].grade>persons[j+1].grade){
temp=persons[j];
persons[j]=persons[j+1];
persons[j+1]=temp;
}
}
}
}
else{
for(int i=0;i<n-1;i++){
for(int j=0;j<n-1-i;j++){
if(persons[j].grade<persons[j+1].grade){
temp=persons[j];
persons[j]=persons[j+1];
persons[j+1]=temp;
}
}
}
}
for(int i=0;i<n;i++){
System.out.println(persons[i].name+" "+persons[i].grade);
}
}
}
}
class Person{
String name;
int grade;
public void set(String name,int grade){
this.name=name;
this.grade=grade;
}
}