第一次参加在线笔试,因为没有经验,以为选择题也能用本地编辑器.结果悲剧地被记录一次切换窗口
编程题一共两道.第二道题我对题目理解困难.只做了第一道题;
题目:
给出一个数组,输出一个数,这个数插入数组后这个数组的中位数不变;有小数保留一位
事例:
输入:
5(范围1~100)
1 2 3 4 5(个数1~100)
输出:
3
解释:
输入第一行为数组的长度,第二行为数组元素;因为这个数组的中位数为3,所以插入3后原数组的中位数不变.所以输出为3;
这是我写的答案:
var length=read_line();
var arr=read_line();
var arr1=[];
for(var i=0;i<length;i++){
arr1[i]=+arr.split(' ')[i];
}
function quickSort(arr){
if(arr.length<=1){
return arr;
}
let pivotIndex=Math.floor(arr.length/2),
pivot=arr.splice(pivotIndex,1)[0],
left=[],
right=[];
for(let i=0;i<arr.length;i++){
if(arr[i]<pivot){
left.push(arr[i])
}else{
right.push(arr[i])
}
}
return quickSort(left).concat([pivot],quickSort(right))
}
var arr2=quickSort(arr1);
if(arr2.length%2!==0){
//中位数为中间的数
var res=arr2[Math.floor(arr2.length/2)];
}else{
var res=((arr2[Math.floor(arr2.length/2)]+arr2[Math.floor(arr2.length/2)-1])/2).toFixed(1)
//中位数为两数平均数;
}
print(res);