What is meant by Sparse Array? (original) (raw)
Last Updated : 27 Oct, 2022
A sparse array or sparse matrix is an array in which most of the elements are zero.
Characteristics of Sparse array:
- The sparse array is an array in which most of the elements have the same value(the default value is zero or null).
- Sparse matrices are those array that has the majority of their elements equal to zero.
- A sparse array is an array in which elements do not have contiguous indexes starting at zero.
- Sparse arrays are used over arrays when there are lesser non-zero elements. Sparse arrays require lesser memory to store the elements and the computation time can be saved.
Examples of Sparse array:
\begin{bmatrix} 0 & 4 & 0 \\ 1 & 0 & 0\\ 0 & 3 & 0 \\\end{bmatrix}
\begin{bmatrix} 0 & 4 & 0 &0\\ 1 & 0 & 0 &2\\ 0 & 3 & 0 & 0\\ 0 & 0 & 9 & 0\\\end{bmatrix}
\begin{bmatrix} 0 & 0\\ 0 & 3 \\\end{bmatrix}
Why sparse array is required over simple arrays to store the elements:
- Storage: When there is the maximum number of zero elements and the minimum number of non-zero elements then we use a sparse array over a simple array as it requires less memory to store the elements. In the sparse array, we only store the non-zero elements.
- Computation Time: In the sparse array we only store non-zero elements and hence, traversing only non-zero elements takes less computation time.
Representation of Sparse Array:
Sparse arrays can be represented in two ways:
- Array Representation
- Linked List Representation
1. Array Representation:
To represent a sparse array 2-D array is used with three rows namely: Row, Column, and Value.
Row: Index of the row where non-zero elements are present.
Column: Index of the column where the non-zero element is present.
Value: The non-zero value which is present in (Row, Column) index.
Array Representation of Sparse Array
2. Linked List Representation:
To represent a sparse array using linked lists, each node has four fields namely: Row, Column, Value, and Next node.
Row: Index of the row where non-zero elements are present.
Column: Index of the column where the non-zero element is present.
Value: The non-zero value which is present in (Row, Column) index.
Next node: It stores the address of the next node.
Linked List Representation of Sparse Array
Implementation of array representation of the sparse array:
Implementation of array representation of the sparse array
Below is the representation of the sparse array:
C++ `
// Implementation of array representation // of the sparse array #include using namespace std;
int main() { int sparse[4][4] = { { 0, 0, 7, 0 }, { 1, 0, 0, 0 }, { 2, 0, 5, 0 }, { 0, 8, 0, 4 } }; int s = 0; for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) if (sparse[i][j] != 0) s++; int representsparse[3][s]; int k = 0; for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) if (sparse[i][j] != 0) { representsparse[0][k] = i; representsparse[1][k] = j; representsparse[2][k] = sparse[i][j]; k++; } cout << "Representation of Sparse array using arrays : " "\n"; for (int i = 0; i < 3; i++) { for (int j = 0; j < s; j++) cout << " " << representsparse[i][j]; cout << "\n"; } return 0; }
Java
/*package whatever //do not write package name here / import java.io.;
class GFG { public static void main(String[] args) { int[][] sparse = { { 0, 0, 7, 0 }, { 1, 0, 0, 0 }, { 2, 0, 5, 0 }, { 0, 8, 0, 4 } }; int s = 0; for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) if (sparse[i][j] != 0) s++; int[][] representsparse = new int[3][s]; int k = 0; for (int i = 0; i < 4; i++) for (int j = 0; j < 4; j++) if (sparse[i][j] != 0) { representsparse[0][k] = i; representsparse[1][k] = j; representsparse[2][k] = sparse[i][j]; k++; } System.out.print( "Representation of Sparse array using arrays : "); System.out.println(); for (int i = 0; i < 3; i++) { for (int j = 0; j < s; j++) System.out.print(" " + representsparse[i][j]); System.out.println(); } } }
// This code is contributed by lokeshpotta20.
Python3
Implementation of array representation
of the sparse array
sparse = [[0, 0, 7, 0], [1, 0, 0, 0], [2, 0, 5, 0], [0, 8, 0, 4]] s = 0 for i in range(4): for j in range(4): if (sparse[i][j] != 0): s += 1
representsparse = [[0 for i in range(s)] for i in range(3)] k = 0 for i in range(4): for j in range(4): if (sparse[i][j] != 0): representsparse[0][k] = i representsparse[1][k] = j representsparse[2][k] = sparse[i][j] k += 1
print("Representation of Sparse array using arrays : ")
for i in range(3): for j in range(s): print(representsparse[i][j], end=" ") print("")
# This code is contributed by saurabh_jaiswal.
C#
using System;
public class GFG{
static public void Main (){
// initializing sparse array
int [,] sparse= { { 0, 0, 7, 0 },
{ 1, 0, 0, 0 },
{ 2, 0, 5, 0 },
{ 0, 8, 0, 4 } };
int s = 0;
for (int i = 0; i < 4; i++){
for (int j = 0; j < 4; j++){
if (sparse[i,j] != 0)
s++;
}
}
int [,]representsparse =new int[3, s];
int k = 0;
for (int i = 0; i < 4; i++){
for (int j = 0; j < 4; j++){
if (sparse[i,j] != 0) {
representsparse[0,k] = i;
representsparse[1,k] = j;
representsparse[2,k] = sparse[i,j];
k++;
}
}
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < s; j++){
Console.Write(representsparse[i,j]+" ");
}
Console.WriteLine();
}
}}
JavaScript
`
Output
Representation of Sparse array using arrays : 0 1 2 2 3 3 2 0 0 2 1 3 7 1 2 5 8 4