题解 | #成绩排序#
成绩排序
http://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
将分数分离,然后记录它的索引,然后使用reduce进行排序,排序后的index即为原数组的排序index的索引,然后输出即可。
let line
let arr = []
const getSequence = (arr,order)=>{
let scoreArr = []
let result = []
// 将分数分离
arr.forEach((item,index)=>{
let temp = item.split(' ');
scoreArr.push({
index:index,
score:parseInt(temp[1])
})
});
result = scoreArr.reduce((list,item)=>{
let newList = list
if(newList.length == 0){
newList.push(item)
}else{
let index;
if(order == 0){
index = newList.findIndex((i)=>i.score < item.score);
}else{
index = newList.findIndex((i)=>i.score > item.score);
}
index > -1 ? newList.splice(index,0,item) : newList.push(item)
}
return newList
},[])
let res = []
result.forEach((item)=>{
let index = item.index
res.push(arr[index])
})
return res
}
while(line = readline()){
arr.push(line);
if(arr.length >= 2){
let count = parseInt(arr[0]);
let direction = parseInt(arr[1]); //0 从高到低 1 从低到高
if(arr.length == 2 + count){
let dict = JSON.parse(JSON.stringify(arr));
dict.splice(0,2);
let newArr = []
let result = getSequence(dict,direction);
result.map(i=>console.log(i))
arr = []
}
}
}