题目描述
中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)
输入描述:
该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1<=N<=10000.
接着N行为N个数据的输入,N=0时结束输入
输出描述:
输出中位数,每一组测试数据输出一行
var readline = require('readline');
rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
var inputs = [];
var num = 0;
rl.on('line', function(data) {
if(num == 0){
num = Number(data.trim());
} else {
inputs.push(data.trim());
if (num == inputs.length) {
var result = deal(inputs);
console.log(result);
inputs.length = 0;
num = 0;
}
}
});
function deal(inputs) {
var result = 0;
// dosomething
var data =
inputs.map(function(item){return parseInt(item.trim())}).sort(function(v1,v2){return v1-v2});
var len = data.length;
if(len%2==0){
var l = len/2;
result = Math.floor((data[l]+data[l-1])/2);
}else{
var l = (len-1)/2;
result = data[l]
}
return result;
}
rl.on(‘line’,function(){});这样的读取方式似乎更适合多个测试用例的读取。
此文章主要是提供一个ndoejs编程题模板。