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
#include <stdio.h>
#include <stdlib.h>
int cmpfunc( const void * a, const void * b)
{
return (*( int *)a - *( int *)b);
}
double findMean( int a[], int n)
{
int sum = 0;
for ( int i = 0; i < n; i++)
sum += a[i];
return ( double )sum / ( double )n;
}
double findMedian( int a[], int n)
{
qsort (a, n, sizeof ( int ), cmpfunc);
if (n % 2 != 0)
return ( double )a[n / 2];
return ( double )(a[(n - 1) / 2] + a[n / 2]) / 2.0;
}
int main()
{
int a[] = { 1, 3, 4, 2, 7, 5, 8, 6 };
int N = sizeof (a) / sizeof (a[0]);
printf ( "Mean = %f\n" , findMean(a, N));
printf ( "Median = %f\n" , findMedian(a, N));
return 0;
}
|
C++
#include <bits/stdc++.h>
using namespace std;
double findMean( int a[], int n)
{
int sum = 0;
for ( int i = 0; i < n; i++)
sum += a[i];
return ( double )sum / ( double )n;
}
double findMedian( int a[], int n)
{
sort(a, a + n);
if (n % 2 != 0)
return ( double )a[n / 2];
return ( double )(a[(n - 1) / 2] + a[n / 2]) / 2.0;
}
int main()
{
int a[] = { 1, 3, 4, 2, 7, 5, 8, 6 };
int N = sizeof (a) / sizeof (a[0]);
cout << "Mean = " << findMean(a, N) << endl;
cout << "Median = " << findMedian(a, N) << endl;
return 0;
}
|
Java
import java.util.*;
class GFG
{
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;
}
public static double findMedian( int a[], int n)
{
Arrays.sort(a);
if (n % 2 != 0 )
return ( double )a[n / 2 ];
return ( double )(a[(n - 1 ) / 2 ] + a[n / 2 ]) / 2.0 ;
}
public static void main(String args[])
{
int a[] = { 1 , 3 , 4 , 2 , 7 , 5 , 8 , 6 };
int n = a.length;
System.out.println( "Mean = " + findMean(a, n));
System.out.println( "Median = " + findMedian(a, n));
}
}
|
Python3
def findMean(a, n):
sum = 0
for i in range ( 0 , n):
sum + = a[i]
return float ( sum / n)
def findMedian(a, n):
sorted (a)
if n % 2 ! = 0 :
return float (a[ int (n / 2 )])
return float ((a[ int ((n - 1 ) / 2 )] +
a[ int (n / 2 )]) / 2.0 )
a = [ 1 , 3 , 4 , 2 , 7 , 5 , 8 , 6 ]
n = len (a)
print ( "Mean =" , findMean(a, n))
print ( "Median =" , findMedian(a, n))
|
C#
using System;
class GFG
{
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;
}
public static double findMedian( int [] a, int n)
{
Array.Sort(a);
if (n % 2 != 0)
return ( double )a[n / 2];
return ( double )(a[(n - 1) / 2] + a[n / 2]) / 2.0;
}
public static void Main()
{
int [] a = { 1, 3, 4, 2, 7, 5, 8, 6 };
int n = a.Length;
Console.Write( "Mean = " + findMean(a, n) + "\n" );
Console.Write( "Median = " + findMedian(a, n)
+ "\n" );
}
}
|
PHP
<?php
function findMean(& $a , $n )
{
$sum = 0;
for ( $i = 0; $i < $n ; $i ++)
$sum += $a [ $i ];
return (double) $sum /
(double) $n ;
}
function findMedian(& $a , $n )
{
sort( $a );
if ( $n % 2 != 0)
return (double) $a [ $n / 2];
return (double)( $a [( $n - 1) / 2] +
$a [ $n / 2]) / 2.0;
}
$a = array (1, 3, 4, 2,
7, 5, 8, 6);
$n = sizeof( $a );
echo "Mean = " .
findMean( $a , $n ). "\n" ;
echo "Median = " .
findMedian( $a , $n );
?>
|
Javascript
<script>
function findMean(a,n)
{
let sum = 0;
for (let i = 0; i < n; i++)
sum += a[i];
return sum / n;
}
function findMedian(a,n)
{
a.sort();
if (n % 2 != 0)
return a[n / 2];
return (a[Math.floor((n-1)/2)] +
a[n / 2]) / 2;
}
let a = [1, 3, 4, 2, 7, 5, 8, 6]
let n = a.length;
document.write( "Mean = " + findMean(a, n) + "<br>" );
document.write( "Median = " + findMedian(a, n));
</script>
|
OutputMean = 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)
This article is contributed by Himanshu Ranjan. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.