Emulating a 2d array using 1d array (original) (raw)
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
`
Time Complexity: O(n*m)
Auxiliary Space: O(n*m)
Similar Reads
- Deleting Elements in an Array - Array Operations In this post, we will look into deletion operation in an Array, i.e., how to delete an element from an Array, such as:Delete an Element from the Beginning of an ArrayDelete an Element from a Given Position in an ArrayDelete First Occurrence of Given Element from an ArrayRemove All Occurrences of an 4 min read
- Print a 2D Array or Matrix using single loop Given a matrix mat[][] of N * M dimensions, the task is to print the elements of the matrix using a single for loop. Examples: Input: mat[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}Output: 1 2 3 4 5 6 7 8 9 Input: mat[][] = {{7, 9}, {10, 34}, {12, 15}}Output: 7 9 10 34 12 15 Approach: To traverse the gi 5 min read
- 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
- Row wise sorting a 2D array Given a 2D array, sort each row of this array and print the result.Examples: Input : mar[][] = [ [77, 11, 22, 3], [11, 89, 1, 12], [32, 11, 56, 7], [11, 22, 44, 33] ] Output : mat[][] = [ [3, 11, 22, 77], [1, 11, 12, 89], [7, 11, 32, 56], [11, 22, 33, 44] ] Input : mat[][] = [ [8, 6, 4, 5], [3, 5, 2 4 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
- Create Spiral Matrix from Array using Direction Arrays Given an array arr[] and two values n and m, the task is to fill a matrix of size n*m in a spiral (or circular) fashion (clockwise) with given array elements.Examples: Input: n = 4, m = 4, arr []= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]Output : [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16 8 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
- Jagged Array or Array of Arrays in C with Examples Prerequisite: Arrays in CJagged array is array of arrays such that member arrays can be of different sizes, i.e., we can create a 2-D array but with a variable number of columns in each row. These type of arrays are also known as Jagged arrays. Example:arr[][] = { {0, 1, 2}, {6, 4}, {1, 7, 6, 8, 9}, 3 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