描述
对于给出的 nn 条姓名和成绩信息,根据指定的排序方式按成绩升序或降序排列并输出。
特别的,成绩相同的同学需要保持输入的先后顺序进行排序。可能存在多条信息的学生姓名一致。
输入描述:
第一行输入一个整数 n(1≦n≦200)n(1≦n≦200) 代表学生人数。
第二行输入一个整数 op(0≦op≦1)op(0≦op≦1) 代表排序方式,其中,00 表示按成绩降序,11 表示按成绩升序。
此后 nn 行,第 ii 行依次输入:
∙ ∙一个长度为 1≦len(si)≦201≦len(si)≦20、由大小写字母构成的字符串 sisi 代表第 ii 个学生的姓名;
∙ ∙一个整数 ai(0≦ai≦100)ai(0≦ai≦100) 代表这个学生的成绩。
输出描述:
根据输入的排序方式,按照成绩升序或降序输出所有学生的姓名和成绩。对于每一名学生,新起一行。输出学生的姓名和成绩,用空格分隔。
示例1
输入:
3 0 fang 90 yang 50 ning 70 输出:
fang 90 ning 70 yang 50
说明:
在这个样例中,op=0op=0,因此按成绩降序排序。
思路:
这个的难度标的高,但是看起来跟前几题没什么区别,只要确定用哪个值排序即可,还要看清楚题目,究竟0和1,哪个代表升序,哪个代表降序。我就弄混了,和上一道排序的0,1代表的不一样,找问题找了好几分钟
代码:
void async function () {
let arr = [];
while(line = await readline()){
arr.push(line);
}
let sortArr = arr.splice(2, arr[0])
let sortedArr = JSON.parse(JSON.stringify(
sortArr.sort((a,b) => {
if(arr[1] == 0){
return b.split(' ')[1] - a.split(' ')[1]
}else{
return a.split(' ')[1] - b.split(' ')[1]
}
})
))
console.log(sortedArr.join('\n'));
}()
芝士:
请注意审题,看到底是降序还是升序
以下是升序,从小打大
arr.sort((a,b) => {
return a - b
})
516



被折叠的 条评论
为什么被折叠?



