Open In App

Matrix or Grid or 2D Array – Complete Tutorial

Last Updated : 10 Dec, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Matrix or Grid is a two-dimensional array mostly used in mathematical and scientific calculations. It is also considered as an array of arrays, where array at each index has the same size.

Introduction-to-Matrix

Representation of Matrix Data Structure:

As you can see from the below image, the elements are organized in rows and columns. As shown in the image, the cell a[0][0] is the first element of the first row and first column.

Representation-of-Matrix


Declaration of Matrix Data Structure :

Declaration of a Matrix or two-dimensional array is very much similar to that of a one-dimensional array, given as follows.

C++
#include<iostream>#include<vector>usingnamespacestd;intmain(){// Defining number of rows and columns in matrixintrows=3,cols=3;// Vector of vectors declarationvector<vector<int>>arr(rows,vector<int>(cols));return0;}
C
#include<stdio.h>intmain(){// Defining number of rows and columns in matrixintrows=3,cols=3;// Array Declarationintarr[rows][cols];return0;}
Java
/*package whatever //do not write package name here */importjava.io.*;classGFG{publicstaticvoidmain(String[]args){// Defining number of rows and columns in matrixintrows=3,cols=3;// Array Declarationint[][]arr=newint[rows][cols];}}
Python
# Defining number of rows and columns in matrixrows=3cols=3# Declaring a matrix of size 3 X 3, and # initializing it with value zerorows,cols=(3,3)arr=[[0]*cols]*rowsprint(arr)
C#
usingSystem;publicclassGFG{staticpublicvoidMain(){// Defining number of rows and columns in matrixintrows=3,cols=3;// Array Declarationint[,]arr=newint[rows,cols];}}
JavaScript
// Defining number of rows and columns in matrixrows=3,cols=3;// Declare a 2D array using array constructorletarr=newArray(3);// Python declarationfor(leti=0;i<arr.length;i++){arr[i]=newArray(3);// Each row has 3 columns}

Initializing Matrix Data Structure:

In initialization, we assign some initial value to all the cells of the matrix. Below is the implementation to initialize a matrix in different languages:

C++
#include<iostream>#include<vector>usingnamespacestd;intmain(){// Initializing a 2-D vector with valuesvector<vector<int>>arr={{1,2,3},{4,5,6},{7,8,9}};return0;}
C
#include<stdio.h>intmain(){// Initializing a 2-D array with valuesintarr[3][3]={{1,2,3},{4,5,6},{7,8,9}};return0;}
Java
/*package whatever //do not write package name here */importjava.io.*;classGFG{publicstaticvoidmain(String[]args){// Initializing a 2-D array with valuesintarr[][]={{1,2,3},{4,5,6},{7,8,9}};}}
Python
# Initializing a 2-D array with valuesarr=[[1,2,3],[4,5,6],[7,8,9]];
C#
usingSystem;publicclassGFG{staticpublicvoidMain(){int[,]arr={{1,2,3},{4,5,6},{7,8,9}};}}
JavaScript
// Initializing a 2-D array with valuesletarr=[[1,2,3],[4,5,6],[7,8,9]];

Operations on Matrix Data Structure:

We can perform a variety of operations on the Matrix Data Structure. Some of the most common operations are:

  • Access elements of Matrix
  • Traversal of a Matrix
  • Searching in a Matrix
  • Sorting a Matrix

1. Access elements of Matrix Data Structure:

Like one-dimensional arrays, matrices can be accessed randomly by using their indices to access the individual elements. A cell has two indices, one for its row number, and the other for its column number. We can use arr[i][j] to access the element which is at the ith row and jth column of the matrix.

C++
#include<iostream>#include<vector>usingnamespacestd;intmain(){// Initializing a 2-D vector with valuesvector<vector<int>>arr={{1,2,3},{4,5,6},{7,8,9}};// Accessing elements of 2-D vectorcout<<"First element of first row: "<<arr[0][0]<<"\n";cout<<"Third element of second row: "<<arr[1][2]<<"\n";cout<<"Second element of third row: "<<arr[2][1]<<"\n";return0;}
C
#include<stdio.h>intmain(){// Initializing a 2-D array with valuesintarr[3][3]={{1,2,3},{4,5,6},{7,8,9}};// Accessing elements of 2-D arrayprintf("First element of first row: %d\n",arr[0][0]);printf("Third element of second row: %d\n",arr[1][2]);printf("Second element of third row: %d\n",arr[2][1]);return0;}
Java
/*package whatever //do not write package name here */importjava.io.*;classGFG{publicstaticvoidmain(String[]args){// Initializing a 2-D array with valuesint[][]arr={{1,2,3},{4,5,6},{7,8,9}};// Accessing elements of 2-D arraySystem.out.println("First element of first row: "+arr[0][0]);System.out.println("Third element of second row: "+arr[1][2]);System.out.println("Second element of third row: "+arr[2][1]);}}
Python
# Initializing a 2-D array with valuesarr=[[1,2,3],[4,5,6],[7,8,9]]# Accessing elements of 2-D arrayprint("First element of first row:",arr[0][0])print("Third element of second row:",arr[1][2])print("Second element of third row:",arr[2][1])
C#
usingSystem;publicclassGFG{staticpublicvoidMain(){// Initializing a 2-D array with valuesint[,]arr={{1,2,3},{4,5,6},{7,8,9}};// Accessing elements of 2-D arrayConsole.WriteLine("First element of first row: "+arr[0,0]);Console.WriteLine("Third element of second row: "+arr[1,2]);Console.WriteLine("Second element of third row: "+arr[2,1]);}}
JavaScript
// Initializing a 2-D array with valuesletarr=[[1,2,3],[4,5,6],[7,8,9]];// Accessing elements of 2-D arrayconsole.log("First element of first row: "+arr[0][0]);console.log("Third element of second row: "+arr[1][2]);console.log("Second element of third row: "+arr[2][1]);

2. Traversal of a Matrix Data Structure:

We can traverse all the elements of a matrix or two-dimensional array by using two for-loops.

C++
#include<bits/stdc++.h>usingnamespacestd;intmain(){// Initializing a 2-D vector with valuesvector<vector<int>>arr={{1,2,3,4},{5,6,7,8},{9,10,11,12}};// Traversing over all the rowsfor(inti=0;i<arr.size();i++){// Traversing over all the columns of each rowfor(intj=0;j<arr[i].size();j++){cout<<arr[i][j]<<" ";}cout<<endl;}return0;}
C
#include<stdio.h>intmain(){intarr[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};// Traversing over all the rowsfor(inti=0;i<3;i++){// Traversing over all the columns of each rowfor(intj=0;j<4;j++){printf("%d ",arr[i][j]);}printf("\n");}return0;}
Java
/*package whatever //do not write package name here */importjava.io.*;classGFG{publicstaticvoidmain(String[]args){int[][]arr={{1,2,3,4},{5,6,7,8},{9,10,11,12}};// Traversing over all the rowsfor(inti=0;i<3;i++){// Traversing over all the columns of each rowfor(intj=0;j<4;j++){System.out.print(arr[i][j]+" ");}System.out.println();}}}// This code is contributed by lokesh
Python
# Initializing a 2-D list with valuesarr=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]# Traversing each rowforrowinarr:# Traversing each element# in the current rowforxinrow:print(x,end=" ")print()
C#
usingSystem;publicclassGFG{staticpublicvoidMain(){int[,]arr=newint[3,4]{{1,2,3,4},{5,6,7,8},{9,10,11,12}};// Traversing over all the rowsfor(inti=0;i<3;i++){// Traversing over all the columns of each rowfor(intj=0;j<4;j++){Console.Write(arr[i,j]);Console.Write(" ");}Console.WriteLine(" ");}}}// This code is contributed by akashish__
JavaScript
// JS code for above approachletarr=[[1,2,3,4],[5,6,7,8],[9,10,11,12]];// Traversing over all the rowsfor(leti=0;i<3;i++){lets="";// Traversing over all the columns of each rowfor(letj=0;j<4;j++){s+=(arr[i][j]+" ");}console.log(s);}// This code is contributed by ishankhandelwals.

Output
1 2 3 4 5 6 7 8 9 10 11 12 

3. Searching in a Matrix Data Structure:

We can search an element in a matrix by traversing all the elements of the matrix.

Below is the implementation to search an element in a matrix:

C++
#include<bits/stdc++.h>usingnamespacestd;boolsearchInMatrix(vector<vector<int>>&arr,intx){intm=arr.size(),n=arr[0].size();for(inti=0;i<m;i++){for(intj=0;j<n;j++){if(arr[i][j]==x)returntrue;}}returnfalse;}// Driver program to test aboveintmain(){intx=8;vector<vector<int>>arr={{0,6,8,9,11},{20,22,28,29,31},{36,38,50,61,63},{64,66,100,122,128}};if(searchInMatrix(arr,x))cout<<"YES"<<endl;elsecout<<"NO"<<endl;return0;}
Java
// Java code for the above approachimportjava.io.*;classGFG{staticbooleansearchInMatrix(int[][]arr,intx){intm=arr.length,n=arr[0].length;for(inti=0;i<m;i++){for(intj=0;j<n;j++){if(arr[i][j]==x)returntrue;}}returnfalse;}publicstaticvoidmain(String[]args){intx=8;int[][]arr={{0,6,8,9,11},{20,22,28,29,31},{36,38,50,61,63},{64,66,100,122,128}};if(searchInMatrix(arr,x)){System.out.println("YES");}else{System.out.println("NO");}}}// This code is contributed by lokeshmvs21.
Python
# Function to search for an element in a 2-D listdefsearch_in_matrix(arr,x):rows,cols=len(arr),len(arr[0])# Traverse each row and columnforiinrange(rows):forjinrange(cols):ifarr[i][j]==x:returnTruereturnFalse# Driver code to test the functionx=8arr=[[0,6,8,9,11],[20,22,28,29,31],[36,38,50,61,63],[64,66,100,122,128]]ifsearch_in_matrix(arr,x):print("YES")else:print("NO")
C#
// C# code for the above approachusingSystem;publicclassGFG{staticboolsearchInMatrix(int[,]arr,intx){intm=arr.GetLength(0),n=arr.GetLength(1);for(inti=0;i<m;i++){for(intj=0;j<n;j++){if(arr[i,j]==x)returntrue;}}returnfalse;}publicstaticvoidMain(string[]args){intx=8;int[,]arr={{0,6,8,9,11},{20,22,28,29,31},{36,38,50,61,63},{64,66,100,122,128}};if(searchInMatrix(arr,x)){Console.WriteLine("YES");}else{Console.WriteLine("NO");}}}
JavaScript
// JavaScript code for the above approachfunctionsearchInMatrix(arr,x){letm=arr.length,n=arr[0].length;for(leti=0;i<m;i++){for(letj=0;j<n;j++){if(arr[i][j]==x)returntrue;}}returnfalse;}// Driver program to test aboveletx=8;letarr=[[0,6,8,9,11],[20,22,28,29,31],[36,38,50,61,63],[64,66,100,122,128]];if(searchInMatrix(arr,x))console.log("YES");elseconsole.log("NO");

Output
YES

4. Sorting Matrix Data Structure:

We can sort a matrix in two-ways:

Related Article:



Next Article
Article Tags :
Practice Tags :

Similar Reads

close