Emulating a 2-d array using 1-d array
Last Updated :
11 Sep, 2023
How to convert a 2-d array of size (m x n) into 1-d array and how to store the element at position [i, j] of 2-d array in 1-d array? Clearly, the size of 1-d array is the number of elements in 2-d array i.e.
m x n). If the elements in the 2-d array are stored in row-major order. Then, the element at index [i, j] in 2-d array will be stored in 1-d array at index k as:
k = j + (i * total_no_of_columns_in_matrix)
If the elements in the 2-d array are stored in column-major order, the value of index k will be
k = i + (j * total_no_of_rows_in_matrix)
Examples :
Given 2-d array:
// array is formed in row-major order
__________________________
| |
|1(0,0) 2(0,1) 3(0,2)|
| |
|4(1,0) 5(1,1) 6(1,2)|
|__________________________|
// The elements in parenthesis represents the
// index of the particular element in 2-d array.
Index of element at (0,1) in 1-d array will be:
k(0,1) = 1 + 0 * 3 = 1
Index of element at (1,1) in 1-d array will be:
k(1,1) = 1 + 1 * 3 = 4
Implementation:
C++
// C++ program to emulate 2-d array using
// 1-d array
#include<stdio.h>
#define n 3
#define m 3
#define max_size 100
int main()
{
// Initialising a 2-d array
int grid[n][m] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
// storing elements in 1-d array
int i, j, k = 0;
int array[max_size];
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
k = i*m + j;
array[k] = grid[i][j];
k++;
}
}
// displaying elements in 1-d array
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
printf("%d ", *(array + i*m + j));
printf("\n");
}
return 0;
}
Java
// Java program to emulate 2-d array using
// 1-d array
class GFG
{
// Driver program
public static void main(String arg[])
{
// Declaring number of rows and columns
int n = 3, m = 3;
int array[]=new int[100];
// Initialising a 2-d array
int grid[][] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
// storing elements in 1-d array
int i, j, k = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
k = i * m + j;
array[k] = grid[i][j];
k++;
}
}
// displaying elements in 1-d array
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
System.out.print((array[i * m + j])+" ");
System.out.print("\n");
}
}
}
// This code is contributed by Anant Agarwal.
Python3
# Python program to emulate 2-d
# array using 1-d array
# Declaring number of rows and columns
n = 3; m = 3
array = [0 for i in range(100)]
# Initialising a 2-d array
grid = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]];
# storing elements in 1-d array
k = 0
for i in range(n):
for j in range(m):
k = i*m + j
array[k] = grid[i][j]
k += 1
# displaying elements in 1-d array
for i in range(n):
for j in range(m):
print((array[i*m + j]), " ", end = "")
print()
# This code is contributed by Anant Agarwal.
C#
// C# program to emulate 2-d array using
// 1-d array
using System;
class GFG
{
// Driver program
public static void Main()
{
// Declaring number of rows and columns
int n = 3, m = 3;
int []array=new int[100];
// Initialising a 2-d array
int [,]grid = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
// storing elements in 1-d array
int i, j, k = 0;
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
k = i * m + j;
array[k] = grid[i, j];
k++;
}
}
// displaying elements in 1-d array
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
Console.Write((array[i * m + j])+" ");
Console.Write("\n");
}
}
}
// This code is contributed by nitin mittal
JavaScript
<script>
// Javascript program to emulate 2-d array using
// 1-d array
// Declaring number of rows and columns
let n = 3, m = 3;
let array = new Array(100);
// Initialising a 2-d array
let grid = [ [ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ] ];
// Storing elements in 1-d array
let i, j, k = 0;
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
{
k = i * m + j;
array[k] = grid[i][j];
k++;
}
}
// Displaying elements in 1-d array
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
document.write((array[i * m + j]) + " ");
document.write("<br>");
}
// This code is contributed by _saurabh_jaiswal
</script>
Time Complexity: O(n*m)
Auxiliary Space: O(n*m)
Similar Reads
Inserting Elements in an Array - Array Operations In this post, we will look into insertion operation in an Array, i.e., how to insert into an Array, such as:Insert Element at the Beginning of an ArrayInsert Element at a given position in an ArrayInsert Element at the End of an ArrayInsert Element at the Beginning of an ArrayInserting an element at
2 min read
Time and Space complexity of 1-D and 2-D Array Operations The time and space complexity of one-dimensional and two-dimensional array operations can vary depending on the specific operation. Here, we'll discuss common array operations and provide insights into their time and space complexities for one-dimensional and two-dimensional arrays. One-Dimensional
3 min read
How to iterate a Multidimensional Array? Multidimensional arrays are arrays that have more than one dimension. For example, a simple array is a 1-D array, a matrix is a 2-D array, and a cube or cuboid is a 3-D array but how to visualize arrays with more than 3 dimensions, and how to iterate over elements of these arrays? It is simple, just
8 min read
How to declare a 2D array dynamically in C++ using new operator Prerequisite: Array BasicsIn C/C++, multidimensional arrays in simple words as an array of arrays. Data in multidimensional arrays are stored in tabular form (in row major order). Below is the general form of declaring N-dimensional arrays: Syntax of a Multidimensional Array: data_type array_name[si
4 min read
Arrays and Strings in C++ Arrays An array in C or C++ is a collection of items stored at contiguous memory locations and elements can be accessed randomly using indices of an array. They are used to store similar types of elements as in the data type must be the same for all elements. They can be used to store the collection
5 min read
C++ Multidimensional Array A multidimensional array is an array with more than one dimension. It means that it can grow in different directions i.e. instead of changing the length only, it can also change in width, depth or more.Syntax of Multidimensional ArraysC++data_type array_name[s1][s2]...[sn];where s1, s2,â¦, sn are the
8 min read