java语言在二维数组中的双中值计算

wkftcu5l  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(436)

我必须实现一个静态公共方法在“functionality.java”类中实现一个名为“medianinception”的静态公共方法作为双中值计算。该方法获取一个二维双数组作为输入参数并返回一个双值。
签名:MediaInException(double[][]数组):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上实现这一点。我还想要每个子数组的中间值。

ohtdti5x

ohtdti5x1#

我的问题是:这将是一维数组中位数的计算。但我不知道如何在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;
}

相关问题