牛客網華爲機試【成績排序】

題目描述

查找和排序

題目:輸入任意(用戶,成績)序列,可以獲得成績從高到低或從低到高的排列,相同成績都按先錄入排列在前的規則處理。

例示:

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);
            }
        }
    }
}

結果

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章