找到数组的中值?

2022-09-04 05:39:28

我想知道是否有可能找到数组的中值?例如,假设我有一个大小为 9 的数组。是否有可能找到此阵列的中间插槽?


答案 1

假设数组 x 已排序且长度为 n

如果 n 是奇数,则中位数为 x[(n-1)/2]。
如果 n 是偶数,则中位数为 ( x[n/2] + x[(n/2)-1] ) / 2。


答案 2

如果你想使用任何外部库,这里是Apache commons数学库,你可以计算中位数
有关更多方法和用法,请查看 API 文档

import org.apache.commons.math3.*;
.....
......
........
//calculate median
public double getMedian(double[] values){
 Median median = new Median();
 double medianValue = median.evaluate(values);
 return medianValue;
}
.......

在程序中计算

通常,中位数是使用以下两个公式计算的

如果 n 为奇数,则中位数 (M) = 第 ((n + 1)/2) 项项的值。
如果 n 是偶数,则中位数 (M) = 第 [((n)/2) 项项的值 + ((n)/2 + 1)项项 ]/2

这很容易,因为你有9个元素(奇数)。
查找数组的中间元素。
在你的程序中,你可以声明数组

//as you mentioned in question, you have array with 9 elements
int[] numArray = new int[9]; 

然后你需要使用数组#sort对数组进行排序

Arrays.sort(numArray);
int middle = numArray.length/2;
int medianValue = 0; //declare variable 
if (numArray.length%2 == 1) 
    medianValue = numArray[middle];
else
   medianValue = (numArray[middle-1] + numArray[middle]) / 2;