Emulating a 2-d array using 1-d array - GeeksforGeeks

25 Jun, 2021
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)
For more details about Row-major and Column-major order, refer to: https://en.wikipedia.org/wiki/Row-major_order 
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 
C++
Java
Python3
C#
Javascript
// C++ program to emulate 2-d array using// 1-d array#include<stdio.h>#define n 3#define m 3#define max_size 100int 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 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.
# Python program to emulate 2-d# array using 1-d array # Declaring number of rows and columnsn = 3; m = 3 array = [0 for i in range(100)] # Initialising a 2-d arraygrid = [[1, 2, 3],        [4, 5, 6],        [7, 8, 9]]; # storing elements in 1-d arrayk = 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 arrayfor i in range(n):    for j in range(m):        print((array[i*m + j]), " ", end = "")    print()     # This code is contributed by Anant Agarwal.
// C# program to emulate 2-d array using// 1-d arrayusing 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
<script> // Javascript program to emulate 2-d array using// 1-d array // Declaring number of rows and columnslet n = 3, m = 3;let array = new Array(100); // Initialising a 2-d arraylet grid = [ [ 1, 2, 3 ],             [ 4, 5, 6 ],             [ 7, 8, 9 ] ]; // Storing elements in 1-d arraylet 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 arrayfor(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>
Output: 
1  2  3  
4  5  6  
7  8  9 
This article is contributed by Harsh Agarwal. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 
nitin mittal
anikaseth98
_saurabh_jaiswal
Arrays
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Next Greater Element
Window Sliding Technique
Count pairs with given sum
Program to find sum of elements in a given array
Reversal algorithm for array rotation
Find subarray with given sum | Set 1 (Nonnegative Numbers)
Building Heap from Array
Remove duplicates from sorted array
Sliding Window Maximum (Maximum of all subarrays of size k)
Move all negative numbers to beginning and positive to end with constant extra space