java - 二维数组中的双中位数计算
问题描述
我必须实现一个静态公共方法在类“Functionality.java”中将一个双中位数计算实现为一个名为“medianInception”的静态公共方法该方法获取一个二维双精度数组作为输入参数并返回一个双精度值。
签名: medianInception(double[][] array) : double
首先要计算子数组的中位数。注意这些可以是未排序
的!要对单个数组进行排序,请使用 BubbleSort、InsertionSort 或 SelectionSort。然后将它们的中位数输入一个新的 (一维)数组,依次计算中位数,然后返回。如果其中一个数组为null或空,则返回Double.NaN。
查询一个数组是零还是空时,一定要先查询零,否则会出现NullPointerException!
我可以使用数学库
我的代码:
public static double median(int[] m) {
int middle = m.length / 2;
if (m.length % 2 == 1) {
return m[middle];
} else {
return (m[middle - 1] + m[middle]) / 2.0;
}
}
我的问题:这将是计算一维数组中的中位数。但我只是无法弄清楚如何为 2d 实现这一点。我还想要每个子数组的中位数。
解决方案
我的问题:这将是计算一维数组中的中位数。但我只是无法弄清楚如何为 2d 实现这一点。我还想要每个子数组的中位数。
二维数组是一维数组的数组。您需要做的就是迭代二维数组并将每行的中值存储到一维数组中。
public static double[] median(int[][] m) {
double[] result = new double[m.length];
for (int i = 0; i < m.length; i++) {
int middle = m[i].length / 2;
if (m[i].length % 2 == 1) {
result[i] = m[i][middle];
} else {
result[i] = (m[i][middle - 1] + m[i][middle]) / 2.0;
}
}
return result;
}
推荐阅读
- salesforce - 如何通过 Salesforce 的 RestAPi 连接和检索雪花(数据库)
- python-3.x - 使用 python 将 azure Runbook 与 azure 中的文件共享连接起来
- excel - 无法在 Excel VBA 中使用 InputBox 进行过滤
- c++ - 如何在 ROS 中获取 hector_quadrotor 的 z 位置?
- typescript - 检查对象是否至少具有指定的属性
- java - 不兼容的类型:JSONLoader 无法转换为 Loader
- cmake - 使用 cmake 构建 Fortran 共享库的奇怪问题
- java - 从服务器上部署的 Spring Boot 应用程序中读取 API 元数据
- laravel - Laravel 急切加载 - 一对多关系
- python - 读取字符串,计算出现次数而不使用 pYthon 中的循环