找到数组的中值?

Ste*_*ris 11 c++ java arrays

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

Tur*_*tle 23

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

如果n是奇数,那么中值是x [(n-1)/ 2].
如果n是偶数,则中值是(x [n/2] + x [(n/2)-1])/ 2.


Ani*_*rni 6

如果你想在这里使用任何外部库,那么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;
}
.......
Run Code Online (Sandbox Code Playgroud)

在程序中计算

通常,使用此处给出的以下两个公式计算中值

如果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]; 
Run Code Online (Sandbox Code Playgroud)

那么你需要使用Arrays排序数组#sorted

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;
Run Code Online (Sandbox Code Playgroud)