从Java中的2D数组获取中值

时间:2017-12-03 09:43:01

标签: java arrays median

我是编程新手,2个月前我开始学习Java。 我被指派做一个小程序,这个程序的一部分我必须得到2D数组的中位数。 2D阵列包括3个科目和(N)个学生。我必须得到每个科目的中位数,但我真的不明白我将如何对每个科目的数字进行排序。

我应该开始的任何帮助,提示或建议都非常感谢。

2 个答案:

答案 0 :(得分:-1)

考虑 arr 是包含双精度值的二维数组。使用以下代码

Arrays.sort(arr, Comparator<double[]>() {
    public int compare(double a, double b) {
        return Double.compare(a[0], b[0]);
    }
});

此处数组比较器均可在 java.util 包下使用。 如果您使用的是Java 8,则可以在一行中完成。

Arrays.sort(arr, (a,b) -> Double.compare(a[0], b[0]));

答案 1 :(得分:-1)

您可以使用java.util.arrays.sort()方法。

import java.util.*;
public class MyClass {
public static void main(String args[]) {
    int N=10; // number of students
    double[][] array = new double[3][N];

    for (int i=0;i<3;i++)       
        for (int j=0;j<N;j++)
            array[i][j]= // students scores

    for (int i=0;i<3;i++) {
        double[] temp = new double[N];
        for (int j=0;j<N;j++)
            temp[j]=array[i][j];     // create an array for each subject

            Arrays.sort(temp);     // sort each array
            double median;
            if (temp.length % 2 == 0)   // find median for each case
                median = ((double)temp[temp.length/2] + (double)temp[temp.length/2 - 1])/2;
            else
            median = (double) temp[temp.length/2];
            System.out.println("Median of Subject " +(i+1)+" = " + median);
        }
    }
}

您可以根据需要更改数据类型......