# Program for Mean and median of an unsorted array

Hello Everyone,

Given n size unsorted array, find it’s mean and median.

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

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 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 (4 + 5)/2 = 4.5 Input : a[] = {4, 4, 4, 4, 4} Output : Mean = 4 Median = 4

Below is the code implementation:

`// CPP program to find mean and median of`

`// an array`

`#include <bits/stdc++.h>`

`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;`

`}`

Output

Mean = 4.5 Median = 4.5

Time Complexity to find mean = O(n)
Time Complexity to find median = O(n Log n) as we need to sort the array first.