题解 | #数据流中的中位数#
数据流中的中位数
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 };