如果参数是名为int[][]
的{{1}},您如何找到它的中位数?
很抱歉,如果我的格式错误,那是我第一次来这里。
计算数组中每个int的整个2d数组的中位数。
所有行的长度都相同,例如:
1 4 3 2 5
4 5 3 2 9
4 7 8 98 24
答案 0 :(得分:0)
如果我正确地解释了你的问题,你会像找到任何数字集的中位数一样:
只要您将计算中包含的所有数字都包含在某种排序列表中,就可以找到中位数。如果您的原始数据不是很好(例如2D数组或任何其他数据结构),则您必须创建一个临时列表以在计算过程中使用。
顺便说一下,ArrayList<Integer>
是一个不错的选择。
答案 1 :(得分:0)
请删除你的一个问题,你提出了两个几乎相同的问题..
import java.util.Arrays;
public class Median {
public static void main(String[] args) {
int[][] array2d = {
{1, 4, 3, 2, 5},
{4, 5, 3, 2, 9},
{4, 7, 8, 98, 24}
};
// Create a new list to store the items
int[] list = new int[array2d.length*array2d[0].length];
// keep track of where we are.
int listPos = 0;
// iterate over the entire 2d array adding each integer
for(int i = 0 ; i < array2d.length; i++) {
for(int j = 0; j < array2d.length; j++) {
list[listPos++] = array2d[i][j];
}
}
// sort the list.
Arrays.sort(list);
System.out.println(median(list));
}
/**
* Finds the median in an Array of integers.
* @param m Array of integers
* @return the median value
*/
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;
}
}
}