题解 | #成绩排序#

成绩排序

https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b

这个题的难点是不是在排序上啊,否则我想不出来这个题难在哪儿。

排序的话可以用插入排序、快速排序等。不过JavaScript有Math.sort方法。

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 arr = [];
    while(line = await readline()){
        arr.push(line);
    }
    let count = parseInt(arr[0]);   // 成绩的个数
    let flag = parseInt(arr[1]);
    arr.splice(0,2);
    let obj = {};
    for(let i=0;i<arr.length;i++){
        let tp = arr[i].split(' ');
        if(obj[tp[1]] != undefined){
            let tc = obj[tp[1]];
            obj[tp[1]] = tc+' '+tp[0];
        }else{
            obj[tp[1]] = tp[0];
        }
    }
    let grade_sort = [];
    if(flag == 0){  // 从高到低
        grade_sort = Object.keys(obj).sort((a,b)=>b-a);
    }else if(flag == 1){ // 从低到高
        grade_sort = Object.keys(obj).sort((a,b)=>a-b);
    }
    for(let i = 0;i<grade_sort.length;i++){
        let n = obj[grade_sort[i]]; // 获取名字
        if(n.indexOf(' ') != 0){
            let ns = n.split(' ');
            ns.forEach(item=>{
                console.log(item+' '+grade_sort[i]);
            })
        }else{
            console.log(n+' '+grade_sort[i]);
        }
    }
}()

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务