找到数组的中值?
我想知道是否有可能找到数组的中值?例如,假设我有一个大小为 9 的数组。是否有可能找到此阵列的中间插槽?
假设数组 x 已排序且长度为 n:
如果 n 是奇数,则中位数为 x[(n-1)/2]。
如果 n 是偶数,则中位数为 ( x[n/2] + x[(n/2)-1] ) / 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;