欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

牛客网华为机试【成绩排序】

程序员文章站 2024-03-11 22:11:31
...

题目描述

查找和排序

题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。

例示:

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代表从低到高

输入描述:
输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开

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

示例
输入

3
0
fang 90
yang 50
ning 70

输出

fang 90
ning 70
yang 50

题目分析

既然是个排序,那么可以封装成一个简单的对象(User),然后可以使用好多种排序方法(比如:Arrays.sort()、Collections.sort()、TreeSet等)。

我这里使用的是Arrays.sort方法,自定义比较器。

java代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;

/**
 * 成绩排序
 */
public class Main {
	// 自定义实体类
    private static class User {
        String name;
        Integer score;
        User (String name, Integer score){
            this.name = name;
            this.score = score;
        }
        @Override
        public String toString() {
            return name + " " + score;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        String string;
        while((string = reader.readLine()) != null){
            // 数目
            int count = Integer.parseInt(string);
            // 降序:0,升序:1
            int sortFlag = Integer.parseInt(reader.readLine());

            // 存储
            User[] users = new User[count];
            for (int i = 0; i < count; i++) {
                String[] line = reader.readLine().split(" ");
                users[i] = new User(line[0], Integer.parseInt(line[1]));
            }

            // 排序
            if(sortFlag == 1){
                Arrays.sort(users, Comparator.comparingInt(o -> o.score));
            } else {
                Arrays.sort(users, (o1, o2) -> o2.score - o1.score);
            }

            // 打印
            for (User user : users) {
                System.out.println(user);
            }
        }
    }
}

结果

牛客网华为机试【成绩排序】

相关标签: 牛客网华为机试