Finding the median value of an array?

In C++, you can use std::nth_element; see http://cplusplus.com/reference/algorithm/nth_element/.


Assuming the array x is sorted and is of length n:

If n is odd then the median is x[(n-1)/2].
If n is even than the median is ( x[n/2] + x[(n/2)-1] ) / 2.


If you want to use any external library here is Apache commons math library using you can calculate the Median.
For more methods and use take look at the API documentation

import org.apache.commons.math3.*;
.....
......
........
//calculate median
public double getMedian(double[] values){
 Median median = new Median();
 double medianValue = median.evaluate(values);
 return medianValue;
}
.......
  • For more on evaluate method AbstractUnivariateStatistic#evaluate

Calculate in program

Generally, median is calculated using the following two formulas given here

If n is odd then Median (M) = value of ((n + 1)/2)th item term.
If n is even then Median (M) = value of [((n)/2)th item term + ((n)/2 + 1)th item term ]/2

It is very easy as you have 9 elements (odd number).
Find the middle element of an array.
In your program you can declare array

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

then you need to sort array using Arrays#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;

Tags:

C++

Java

Arrays