题解 | #成绩排序#
成绩排序
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]); } } }()