【较难】算法nodeJs:成绩排序

49 阅读1分钟

描述

对于给出的 n 位同学的姓名和成绩,根据输入要求,按成绩升序或降序排列。

输入描述:

第一行输入一个整数 n(1≦n≦200) 代表学生人数。
第二行输入一个整数 op(0≦op≦1) 代表排序方式,其中,0 表示按成绩降序,1 表示按成绩升序。
此后 n 行,第 i 行输入一个长度为 1≦len(si​)≦20、由大小写字母混合构成的字符串 si​ 代表第 i 个学生的姓名。随后,在同一行输入一个整数 ai​(1≦ai​≦100) 代表这个学生的成绩。

除此之外,保证输入数据中不存在重复的学生姓名。

输出描述:

根据输入的排序方式,按照成绩升序或降序输出所有学生的姓名和成绩。对于每一名学生,新起一行。输出学生的姓名和成绩,用空格分隔。

image.png

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void (async function () {
    // Write your code here
    let len = await readline(); // 人数
    let sort = Number(await readline()); // 排序方式
    let infos = [];
    // 格式化并压入数组
    for (let i = 0; i < len; i++) {
        let info = (await readline()).split(" ");
        infos.push([info[0], Number(info[1])]);
    }
    // 排序
    infos.sort((a, b) => (sort ? a[1] - b[1] : b[1] - a[1]));
    infos.forEach((item) => {
        console.log(item.join(" "));
    });
})();