Wie konvertiert man ein 2-d-Array der Größe (mxn) in ein 1-d-Array und wie speichert man das Element an Position [i, j] eines 2-d-Arrays in einem 1-d-Array? Die Größe des 1-d-Arrays ist eindeutig die Anzahl der Elemente im 2-d-Array, dh (mxn). Wenn die Elemente im 2-D-Array in Zeilenhauptreihenfolge gespeichert werden. Dann wird das Element am Index [i, j] im 2-d-Array im 1-d-Array am Index k gespeichert als: 

k = j + (i * Gesamtzahl_von_Spalten_in_Matrix)

Wenn die Elemente im 2-d-Array in der Reihenfolge der Hauptspalten gespeichert werden, lautet der Wert des Index k 

k = i + (j * Gesamtzahl_von_Zeilen_in_Matrix)

Weitere Einzelheiten zur Reihen- und Spaltenreihenfolge finden Sie unter: https://en.wikipedia.org/wiki/Row-major_order 

Beispiele:  

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++

// 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>

Ausgabe: 

1  2  3  
4  5  6  
7  8  9 

Dieser Artikel wurde von Harsh Agarwal beigesteuert . Wenn Ihnen GeeksforGeeks gefällt und Sie etwas beitragen möchten, können Sie auch einen Artikel über write.geeksforgeeks.org schreiben oder Ihren Artikel per E-Mail an review-team@geeksforgeeks.org senden. Sehen Sie, wie Ihr Artikel auf der Hauptseite von GeeksforGeeks erscheint, und helfen Sie anderen Geeks.
Bitte schreiben Sie Kommentare, wenn Sie etwas Falsches finden oder weitere Informationen zu dem oben diskutierten Thema teilen möchten.
 

Falls Sie an Live-Kursen mit Experten teilnehmen möchten , beziehen Sie sich bitte auf DSA Live-Kurse für Berufstätige und Competitive Programming Live for Students .