返回
用JavaScript寻找两个有序数组的中位数
前端
2023-11-18 23:36:11
算法思路
寻找两个有序数组的中位数,可以采用以下步骤:
- 将两个数组合并成一个新的数组。
- 对合并后的数组进行排序。
- 取排序后数组的中间元素作为中位数。
实现步骤
- 首先,将两个数组合并成一个新的数组。可以使用JavaScript的concat()方法来完成这一步。
const arr1 = [1, 3, 5];
const arr2 = [2, 4, 6];
const mergedArr = arr1.concat(arr2);
- 接下来,对合并后的数组进行排序。可以使用JavaScript的sort()方法来完成这一步。
mergedArr.sort((a, b) => a - b);
- 最后,取排序后数组的中间元素作为中位数。如果数组的长度是偶数,那么中位数是两个中间元素的平均值。如果数组的长度是奇数,那么中位数就是中间元素本身。
const midIndex = Math.floor(mergedArr.length / 2);
const median = mergedArr[midIndex];
示例代码
function findMedian(arr1, arr2) {
// 合并两个数组
const mergedArr = arr1.concat(arr2);
// 对合并后的数组进行排序
mergedArr.sort((a, b) => a - b);
// 取排序后数组的中间元素作为中位数
const midIndex = Math.floor(mergedArr.length / 2);
const median = mergedArr[midIndex];
return median;
}
// 测试用例
const arr1 = [1, 3, 5];
const arr2 = [2, 4, 6];
const median = findMedian(arr1, arr2);
console.log(median); // 输出:3.5
技巧
- 在合并两个数组时,可以使用扩展运算符(...)来简化代码。
const mergedArr = [...arr1, ...arr2];
- 在对数组进行排序时,可以使用箭头函数来简化代码。
mergedArr.sort((a, b) => a - b);
- 在取排序后数组的中间元素时,可以使用Math.floor()方法来确保取到整数索引。
const midIndex = Math.floor(mergedArr.length / 2);