Serge's World

Blogging about software development, astronomy, genealogy and more.

Maths Algorithms in C#: The Median

The median is defined as the data point that falls exactly at the midpoint of a set of data points. If there is an even number of points, then the average is taken of the middle two points.

There is one consideration though – the data points sent through to this function needs to be sorted, otherwise it will return garbage data.

public static double Median(List<double> values)
{
	int mid;
	double median;

	values.Sort();

	if (MathExt.IsEven(values.Count))
	{
		mid = (values.Count / 2) - 1;
		median = (values[mid] + values[mid + 1]) / 2.0;
	}
	else
	{
		mid = (values.Count / 2);
		median = values[mid];
	}

	return median;
}

The full sourcecode for the MathLib library is available at https://github.com/sjmeunier/mathlib

Originally posted on my old blog, Smoky Cogs, on 23 Oct 2009

Updated 5 Oct 2016: Updated code snippet after refactoring MathLib library

Tag Cloud

Algorithms (3) Android (10) Astronomy (25) Audio (1) Audiobooks (1) Barcodes (9) C# (69) Css (1) Deep sky (6) Esoteric languages (3) Family (3) Fractals (10) Gaming (1) Genealogy (14) General (2) Geodesy (3) Google (1) Graphics (3) Hubble (2) Humour (1) Image processing (23) Java (8) Javascript (5) jQuery (3) Jupiter (3) Maths (22) Moon (5) Music (4) Pets (5) Programming (88) Saturn (1) Science (1) Spitzer (4) Sun (4) Tutorials (68) Unity (3) Web (9) Whisky (13) Windows (1) Xamarin (2)