# Program for Mean and median of an unsorted array

Last Updated : 30 May, 2023

Given an unsorted array a[] of size N, the task is to find its mean and median.

Mean of an array = (sum of all elements) / (number of elements)

The median of a sorted array of size N is defined as the middle element when N is odd and average of middle two elements when N is even. Since the array is not sorted here, we sort the array first, then apply above formula.

Examples:

Input: a[] = {1, 3, 4, 2, 6, 5, 8, 7}
Output: Mean = 4.5, Median = 4.5
Explanation: Sum of the elements is 1 + 3 + 4 + 2 + 6 + 5 + 8 + 7 = 36, Mean = 36/8 = 4.5
Since number of elements are even, median is average of 4th and 5th largest elements, which means Median = (4 + 5)/2 = 4.5

Input: a[] = {4, 4, 4, 4, 4}
Output: Mean = 4, Median = 4

Approach:  To solve the problem follow the below steps:

### To find median:

• First, simply sort the array
• Then, check if the number of elements present in the array is even or odd
• If odd, then simply return the mid value of the array
• Else, the median is the average of the two middle values

### To find Mean:

• At first, find the sum of all the numbers present in the array.
• Then, simply divide the resulted sum by the size of the array

Below is the code implementation:

## C

 `// C program to find mean and median of` `// an array` `#include ` `#include `   `// Function to compare two integers for qsort` `int` `cmpfunc(``const` `void``* a, ``const` `void``* b)` `{` `    ``return` `(*(``int``*)a - *(``int``*)b);` `}`   `// Function for calculating mean` `double` `findMean(``int` `a[], ``int` `n)` `{` `    ``int` `sum = 0;` `    ``for` `(``int` `i = 0; i < n; i++)` `        ``sum += a[i];`   `    ``return` `(``double``)sum / (``double``)n;` `}`   `// Function for calculating median` `double` `findMedian(``int` `a[], ``int` `n)` `{` `    ``// First we sort the array` `    ``qsort``(a, n, ``sizeof``(``int``), cmpfunc);`   `    ``// check for even case` `    ``if` `(n % 2 != 0)` `        ``return` `(``double``)a[n / 2];`   `    ``return` `(``double``)(a[(n - 1) / 2] + a[n / 2]) / 2.0;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `a[] = { 1, 3, 4, 2, 7, 5, 8, 6 };` `    ``int` `N = ``sizeof``(a) / ``sizeof``(a[0]);`   `    ``// Function call` `    ``printf``(``"Mean = %f\n"``, findMean(a, N));` `    ``printf``(``"Median = %f\n"``, findMedian(a, N));` `    ``return` `0;` `}`

## C++

 `// CPP program to find mean and median of` `// an array` `#include ` `using` `namespace` `std;`   `// Function for calculating mean` `double` `findMean(``int` `a[], ``int` `n)` `{` `    ``int` `sum = 0;` `    ``for` `(``int` `i = 0; i < n; i++)` `        ``sum += a[i];`   `    ``return` `(``double``)sum / (``double``)n;` `}`   `// Function for calculating median` `double` `findMedian(``int` `a[], ``int` `n)` `{` `    ``// First we sort the array` `    ``sort(a, a + n);`   `    ``// check for even case` `    ``if` `(n % 2 != 0)` `        ``return` `(``double``)a[n / 2];`   `    ``return` `(``double``)(a[(n - 1) / 2] + a[n / 2]) / 2.0;` `}`   `// Driver code` `int` `main()` `{` `    ``int` `a[] = { 1, 3, 4, 2, 7, 5, 8, 6 };` `    ``int` `N = ``sizeof``(a) / ``sizeof``(a[0]);` `  `  `    ``// Function call` `    ``cout << ``"Mean = "` `<< findMean(a, N) << endl;` `    ``cout << ``"Median = "` `<< findMedian(a, N) << endl;` `    ``return` `0;` `}`

## Java

 `// Java program to find mean` `// and median of an array` `import` `java.util.*;`   `class` `GFG ` `{` `    ``// Function for calculating mean` `    ``public` `static` `double` `findMean(``int` `a[], ``int` `n)` `    ``{` `        ``int` `sum = ``0``;` `        ``for` `(``int` `i = ``0``; i < n; i++)` `            ``sum += a[i];`   `        ``return` `(``double``)sum / (``double``)n;` `    ``}`   `    ``// Function for calculating median` `    ``public` `static` `double` `findMedian(``int` `a[], ``int` `n)` `    ``{` `        ``// First we sort the array` `        ``Arrays.sort(a);`   `        ``// check for even case` `        ``if` `(n % ``2` `!= ``0``)` `            ``return` `(``double``)a[n / ``2``];`   `        ``return` `(``double``)(a[(n - ``1``) / ``2``] + a[n / ``2``]) / ``2.0``;` `    ``}`   `    ``// Driver code` `    ``public` `static` `void` `main(String args[])` `    ``{` `        ``int` `a[] = { ``1``, ``3``, ``4``, ``2``, ``7``, ``5``, ``8``, ``6` `};` `        ``int` `n = a.length;` `      `  `        ``// Function call` `        ``System.out.println(``"Mean = "` `+ findMean(a, n));` `        ``System.out.println(``"Median = "` `+ findMedian(a, n));` `    ``}` `}`   `//`

## Python3

 `# Python3 program to find mean` `# and median of an array`   `# Function for calculating mean`     `def` `findMean(a, n):`   `    ``sum` `=` `0` `    ``for` `i ``in` `range``(``0``, n):` `        ``sum` `+``=` `a[i]`   `    ``return` `float``(``sum``/``n)`   `# Function for calculating median`     `def` `findMedian(a, n):`   `    ``# First we sort the array` `    ``sorted``(a)`   `    ``# check for even case` `    ``if` `n ``%` `2` `!``=` `0``:` `        ``return` `float``(a[``int``(n``/``2``)])`   `    ``return` `float``((a[``int``((n``-``1``)``/``2``)] ``+` `                  ``a[``int``(n``/``2``)])``/``2.0``)`     `# Driver code` `a ``=` `[``1``, ``3``, ``4``, ``2``, ``7``, ``5``, ``8``, ``6``]` `n ``=` `len``(a)`   `# Function call` `print``(``"Mean ="``, findMean(a, n))` `print``(``"Median ="``, findMedian(a, n))`   `# This code is contributed by Smitha Dinesh Semwal`

## C#

 `// C# program to find mean` `// and median of an array` `using` `System;`   `class` `GFG ` `{` `    ``// Function for` `    ``// calculating mean` `    ``public` `static` `double` `findMean(``int``[] a, ``int` `n)` `    ``{` `        ``int` `sum = 0;` `        ``for` `(``int` `i = 0; i < n; i++)` `            ``sum += a[i];`   `        ``return` `(``double``)sum / (``double``)n;` `    ``}`   `    ``// Function for` `    ``// calculating median` `    ``public` `static` `double` `findMedian(``int``[] a, ``int` `n)` `    ``{` `        ``// First we sort` `        ``// the array` `        ``Array.Sort(a);`   `        ``// check for` `        ``// even case` `        ``if` `(n % 2 != 0)` `            ``return` `(``double``)a[n / 2];`   `        ``return` `(``double``)(a[(n - 1) / 2] + a[n / 2]) / 2.0;` `    ``}`   `    ``// Driver Code` `    ``public` `static` `void` `Main()` `    ``{` `        ``int``[] a = { 1, 3, 4, 2, 7, 5, 8, 6 };` `        ``int` `n = a.Length;` `      `  `        ``// Function call` `        ``Console.Write(``"Mean = "` `+ findMean(a, n) + ``"\n"``);` `        ``Console.Write(``"Median = "` `+ findMedian(a, n)` `                      ``+ ``"\n"``);` `    ``}` `}`   `// This code is contributed by Smitha .`

## PHP

 ``

## Javascript

 ``

Output

```Mean = 4.5
Median = 4.5```

Complexity Analysis:

Time Complexity to find mean: O(N)
Time Complexity to find median: O(N Log N) as we need to sort the array first.
Auxiliary Space: O(1)