您的位置:首页 > 编程语言

牛客网-考研上机-成绩排序

2017-09-01 19:24 267 查看
链接:https://www.nowcoder.com/questionTerminal/0383714a1bb749499050d2e0610418b1

来源:牛客网

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩

      都按先录入排列在前的规则处理。

   例示:

   jack      70

   peter     96

   Tom       70

   smith     67

   从高到低  成绩            

   peter     96    

   jack      70    

   Tom       70    

   smith     67    

   从低到高

   smith     67  

   Tom       70    

   jack      70    

   peter     96      

[b]输入描述:[/b]
输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开

[b]输出描述:[/b]
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开

示例1

输入

3
0
fang 90
yang 50
ning 70


输出

fang 90
ning 70
yang 50


提交运行查看已提交过的代码算法知识视频讲解

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str;
while(in.hasNext()){
int count = in.nextInt();
int sortType = in.nextInt();

String[] users = new String[count];
int[] scores = new int[count];

for(int i=0; i<count; i++){
String line = in.nextLine();
String[] parts = line.split(" ");
String user = parts[0];
int score = Integer.parseInt(parts[1]);

if(sortType == 0){//判断排序方式
int j = 0;
for(j=i-1;j>=0;j--){//寻找当前输入的数据的位置,把小于他的都往后移动一个位置
if(scores[j]<score){
scores[j+1] = scores[j];
users[j+1] = users[j];
}
else{
break;
}
}
scores[j+1] = score;
users[j+1] = user;
}else {
int j = 0;
for(j=i-1; j>=0; j--){
if(scores[j]>score){
scores[j+1] = scores[j];
users[j+1] = users[j];
}else {
break;
}
}
scores[j+1] = score;
users[j+1] = user;
}
}
for(int i=0; i<count; i++)
System.out.println(users[i]+" "+scores[i]);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  牛客网 在线编程