Emulieren eines 2-d-Arrays mit einem 1-d-Array
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 .