Mean and Median of a matrix (original) (raw)

Last Updated : 13 Sep, 2023

Given a sorted matrix of size **n*n. Calculate the **mean and **median of the matrix .

**Examples:

Input : 1 2 3
4 5 6
7 8 9
Output :Mean: 5
Median: 5
Input : 1 1 1
2 2 2
4 4 4
Output :Mean: 2
Median: 2

Mean of matrix is =
(sum of all elements of matrix)/
(total elements of matrix)
Note that this definition doesn't require
matrix to be sorted and works for all
matrices.
Median of a sorted matrix is calculated as:

  1. When n is odd
    median is mat[n/2][n/2]
  2. When n is even, median is average
    of middle two elements.
    Middle two elements can be found at indexes
    a[(n-2)/2][n-1] and a[n/2][0]

If given matrix is unsorted, we can find its median by first sorting the matrix.

**Implementation:

C++ `

// CPP program to find mean and median // of sorted square matrix. #include <bits/stdc++.h> using namespace std;

const int N = 4;

// Returns mean of a given matrix of // size n x n. double findMean(int a[][N]) { int sum = 0;

// total sum calculation of matrix
for (int i=0; i<N; i++)
   for (int j=0; j<N; j++)
      sum += a[i][j];

return (double)sum/(N*N);

}

// Function for calculating median double findMedian(int a[][N]) { if (N % 2 != 0) return a[N/2][N/2];

if (N%2 == 0)
   return (a[(N-2)/2][N-1] +
                   a[N/2][0])/2.0;

}

// Driver program int main() { int a[N][N]= {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}; cout << "Mean : " << findMean(a) << endl << "Median : "<< findMedian(a) << endl; return 0; }

C

// C program to find mean and median // of sorted square matrix. #include <stdio.h>

#define N 4 // Returns mean of a given matrix of // size n x n. double findMean(int a[][N]) { int sum = 0;

// total sum calculation of matrix
for (int i=0; i<N; i++)
   for (int j=0; j<N; j++)
      sum += a[i][j];

return (double)sum/(N*N);

}

// Function for calculating median double findMedian(int a[][N]) { if (N % 2 != 0) return a[N/2][N/2];

if (N%2 == 0)
   return (a[(N-2)/2][N-1] +
                   a[N/2][0])/2.0;

}

// Driver program int main() { int a[N][N]= {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}, {13, 14, 15, 16}}; printf("Mean : %f\n",findMean(a)); printf("Median : %f\n",findMedian(a)); return 0; }

// This code is contributed by kothavvsaakash.

Java

// Java program to find mean and median // of sorted square matrix. import java.io.*;

class GFG {

// Returns mean of a given // matrix of size n x n. static double findMean(int a[][], int n) { int sum = 0; int N=n;

// total sum calculation of matrix
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
    sum += a[i][j];

return (double)sum / (N * N);

}

// Function for calculating median static double findMedian(int a[][], int n) { int N = n;

if (N % 2 != 0)
return a[N / 2][N / 2];

if (N % 2 == 0)
return (a[(N - 2) / 2][ N - 1] + 
        a[ N / 2][0]) / (2.0);
return 0;

}

// Driver Code
public static void main (String[] args)
{
    int a[][]= {{1, 2, 3, 4},
                {5, 6, 7, 8},
                {9, 10, 11, 12},
                {13, 14, 15, 16}};
        
    int n = a.length;
    System.out.println("Mean   : " + 
                        findMean(a, n));
    System.out.println("Median : " + 
                        findMedian(a, n));
}
    
    

}

// This code is contributed by KRV.

Python3

Python3 program to find mean and median

of sorted square matrix.

N = 4

Returns mean of a given matrix of

size n x n.

def findMean(a):

summ = 0

# total sum calculation of matrix
for i in range(N):
    for j in range(N):
        summ += a[i][j]

return summ/(N*N)

Function for calculating median

def findMedian(a): if (N % 2 != 0): return a[N//2][N//2] if (N % 2 == 0): return (a[(N - 2)//2][N - 1] + a[N//2][0])/2

Driver program

a = [[1, 2, 3, 4],[5, 6, 7, 8], [9, 10, 11, 12],[13, 14, 15, 16]] print("Mean :", findMean(a)) print("Median :",findMedian(a))

This code is contributed by shubhamsingh10

C#

// C# program to find mean and median // of sorted square matrix. using System;

class GFG {

// Returns mean of a given 
// matrix of size n x n.
static double findMean(int [,]a, int n)
{
    int sum = 0;
    int N = n;

    // total sum calculation of matrix
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            sum += a[i,j];

    return (double)sum / (N * N);
}

// Function for calculating median
static double findMedian(int [,]a, int n)
{ 
    int N = n;
    
    if (N % 2 != 0)
    return a[N / 2,N / 2];

    if (N % 2 == 0)
    return ( a[(N - 2) / 2, (N - 1)] +
                 a[ N / 2, 0] ) / (2.0);
    
    return 0;
}

// Driver Code
public static void Main ()
{
    int [,]a= { { 1,  2,  3,  4},
                { 5,  6,  7,  8},
                { 9, 10, 11, 12},
                {13, 14, 15, 16} };
        
    int n = a.GetLength(0);
    
    Console.WriteLine("Mean : " + 
                        findMean(a, n));
                        
    Console.WriteLine("Median : " + 
                        findMedian(a, n));
}
    

}

// This code is contributed by Sam007.

JavaScript

PHP

i<i < i<N; $i++) for ($j = 0; j<j < j<N; $j++) sum+=sum += sum+=a[$i][$j]; return (double)$sum / ($N * $N); } // Function for calculating median function findMedian($a) { global $N; if ($N % 2 != 0) return a[a[a[N / 2][$N / 2]; if ($N % 2 == 0) return ($a[($N - 2) / 2][$N - 1] + a[a[a[N / 2][0]) / 2.0; } // Driver Code $a= array(array(1, 2, 3, 4), array(5, 6, 7, 8), array(9, 10, 11, 12), array(13, 14, 15, 16)); echo "Mean : " , findMean($a),"\n", "Median : ", findMedian($a); // This code is contributed by vt_m. ?>

`

Output

Mean : 8.5 Median : 8.5

**Time complexity: O(N2) as using two for loops
**Auxiliary Space: O(1)

**METHOD 2:Using functions

**APPROACH:

This Python program calculates the mean and median of a given matrix using functions. The program first defines two functions - mean() and median(), which take the matrix as an argument and return the calculated mean and median values, respectively. It then creates a 3x3 matrix and calls these functions to calculate the mean and median of the matrix. Finally, the program prints out the calculated mean and median values.

**ALGORITHM:

// C++ Program for the above approach #include <bits/stdc++.h> using namespace std;

// function to find out mean value double mean(vector<vector>& matrix) { int total = 0; int count = matrix.size() * matrix[0].size();

for (const auto& row : matrix) {
    for (int val : row) {
        total += val;
    }
}

return static_cast<double>(total) / count;

}

// Function to find out the media value double median(vector<vector>& matrix) { vector flatten;

for (const auto& row : matrix) {
    for (int val : row) {
        flatten.push_back(val);
    }
}

  // sorting the flatten array
sort(flatten.begin(), flatten.end());
int n = flatten.size();

if (n % 2 == 0) {
    return (static_cast<double>(flatten[n/2]) + flatten[n/2-1]) / 2;
} else {
    return flatten[n/2];
}

}

// Driver Program to test above functions int main() { // Given Matrix vector<vector> matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

double mean_value = mean(matrix);
double median_value = median(matrix);

cout << "Mean: " << mean_value << endl;
cout << "Median: " << median_value << endl;

return 0;

}

// THIS CODE IS CONTRIBUTED BY KIRTI AGARWAL

Java

import java.util.ArrayList; import java.util.Collections; import java.util.List;

public class Main {

// function to find out mean value
static double mean(List<List<Integer> > matrix)
{
    int total = 0;
    int count = matrix.size() * matrix.get(0).size();

    for (List<Integer> row : matrix) {
        for (int val : row) {
            total += val;
        }
    }

    return (double)total / count;
}

// Function to find out the median value
static double median(List<List<Integer> > matrix)
{
    List<Integer> flatten = new ArrayList<>();

    for (List<Integer> row : matrix) {
        for (int val : row) {
            flatten.add(val);
        }
    }

    // sorting the flatten array
    Collections.sort(flatten);
    int n = flatten.size();

    if (n % 2 == 0) {
        return ((double)flatten.get(n / 2)
                + flatten.get(n / 2 - 1))
            / 2;
    }
    else {
        return flatten.get(n / 2);
    }
}

// Driver Program to test above functions
public static void main(String[] args)
{
    // Given Matrix
    List<List<Integer> > matrix = new ArrayList<>();
    matrix.add(new ArrayList<>(List.of(1, 2, 3)));
    matrix.add(new ArrayList<>(List.of(4, 5, 6)));
    matrix.add(new ArrayList<>(List.of(7, 8, 9)));

    double mean_value = mean(matrix);
    double median_value = median(matrix);

    System.out.println("Mean: " + mean_value);
    System.out.println("Median: " + median_value);
}

} // This code is contributed by akshitaguprzj3

Python3

def mean(matrix): total = sum(val for row in matrix for val in row) count = len(matrix) * len(matrix[0]) return total / count

def median(matrix): flatten = [val for row in matrix for val in row] flatten.sort() n = len(flatten) if n % 2 == 0: return (flatten[n//2] + flatten[n//2-1]) / 2 else: return flatten[n//2]

Create a 3x3 matrix

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Calculate mean and median

mean_value = mean(matrix) median_value = median(matrix)

Print the results

print("Mean:", mean_value) print("Median:", median_value)

C#

using System; using System.Collections.Generic; using System.Linq;

class Program { // Function to find out mean value static double Mean(List<List> matrix) { int total = 0; int count = matrix.Count * matrix[0].Count;

    foreach (var row in matrix)
    {
        foreach (int val in row)
        {
            total += val;
        }
    }

    return (double)total / count;
}

// Function to find out the median value
static double Median(List<List<int>> matrix)
{
    List<int> flatten = new List<int>();

    foreach (var row in matrix)
    {
        foreach (int val in row)
        {
            flatten.Add(val);
        }
    }

    // Sorting the flatten list
    flatten.Sort();
    int n = flatten.Count;

    if (n % 2 == 0)
    {
        return ((double)flatten[n / 2] + flatten[n / 2 - 1]) / 2;
    }
    else
    {
        return flatten[n / 2];
    }
}

// Driver Program to test above functions
static void Main(string[] args)
{
    // Given Matrix
    List<List<int>> matrix = new List<List<int>>
    {
        new List<int> {1, 2, 3},
        new List<int> {4, 5, 6},
        new List<int> {7, 8, 9}
    };

    double meanValue = Mean(matrix);
    double medianValue = Median(matrix);

    Console.WriteLine($"Mean: {meanValue}");
    Console.WriteLine($"Median: {medianValue}");
}

} // This code is contributed by akshitaguprzj3

JavaScript

// Function to calculate the mean of a matrix function mean(matrix) { let total = matrix.flat().reduce((sum, val) => sum + val, 0); let count = matrix.length * matrix[0].length; return total / count; }

// Function to calculate the median of a matrix function median(matrix) { let flatten = matrix.flat().sort((a, b) => a - b); let n = flatten.length; if (n % 2 === 0) { return (flatten[n / 2] + flatten[n / 2 - 1]) / 2; } else { return flatten[Math.floor(n / 2)]; } }

// Create a 3x3 matrix let matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

// Calculate mean and median let meanValue = mean(matrix); let medianValue = median(matrix);

// Print the results console.log("Mean:", meanValue); console.log("Median:", medianValue);

// THIS CODE IS CONTRIBUTED BY KIRTI AGARWAL

`

Output

Mean: 5.0 Median: 5

**Time Complexity: The time complexity of this program is O(nlogn) for sorting the list, where n is the total number of elements in the matrix.
**Space Complexity: The space complexity of this program is O(n) for storing the flattened list, where n is the total number of elements in the matrix.