题解 | #数据流中的中位数#
数据流中的中位数
https://www.nowcoder.com/practice/9be0172896bd43948f8a32fb954e1be1
// 使用插入排序,在数据流加入数组的同时进行排序
const arr = [];
function Insert(num)
{
let i = 0;
// 循环找到第一个比num大的元素,将num添加到该元素位置上,该元素就被挤到下一位上
while(arr.length && arr[i] < num){
i++;
}
arr.splice(i , 0, num);
}
function GetMedian(){
// 计算中位数
let size = arr.length;
let mid = 0;
// 偶数个元素,中位数是中间位置的两个数的平均
if(size % 2 === 0){
mid = (arr[size / 2] + arr[size / 2 - 1]) / 2;
return mid;
}
else{
mid = arr[Math.floor(size / 2)];
return mid;
}
}
module.exports = {
Insert : Insert,
GetMedian : GetMedian
};