Einleitung

Das Drehen eines zweidimensionalen Arrays oder einer Matrix ist ein häufiges Problem in der Programmierung, das in verschiedenen Anwendungen auftreten kann, insbesondere in der Computergrafik und der Datenmanipulation. In diesem Blogbeitrag werden wir den Prozess des Drehens einer 4x4 Matrix um 90 Grad im Uhrzeigersinn näher betrachten.

Verständnis des Problems

Stellen Sie sich vor, Sie haben ein zweidimensionales Array, das so strukturiert ist:

[1][2][3][4]
[5][6][7][8]
[9][0][1][2]
[3][4][5][6]

Nach dem Drehen dieser Matrix um 90 Grad im Uhrzeigersinn sollte sie sich in folgende Form verwandeln:

[3][9][5][1]
[4][0][6][2]
[5][1][7][3]
[6][2][8][4]

Praktisch gesehen verschiebt sich jedes Element im ursprünglichen Array basierend auf der Rotation an eine neue Position. Aber wie setzen wir das in einer Programmiersprache wie C# um? Lassen Sie uns das Schritt für Schritt aufschlüsseln.

Lösung

Schritt 1: Matrix initialisieren

Zuerst müssen wir die Matrix in unserem Programm initialisieren. Hier ist, wie Sie es tun können:

int[,] array = new int[4,4] {
    { 1,2,3,4 },
    { 5,6,7,8 },
    { 9,0,1,2 },
    { 3,4,5,6 }
};

Schritt 2: Funktion zum Drehen der Matrix erstellen

Als nächstes erstellen wir eine Funktion namens RotateMatrix, die die erforderliche Drehung durchführt. Diese Funktion nimmt die ursprüngliche Matrix und ihre Größe als Parameter und gibt die gedrehte Matrix zurück.

Hier ist die Implementierung der Funktion RotateMatrix:

static int[,] RotateMatrix(int[,] matrix, int n) {
    int[,] ret = new int[n, n];

    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            ret[i, j] = matrix[n - j - 1, i];
        }
    }

    return ret;
}

Schritt 3: Erklärung der Funktion

  • Matrix-Deklaration: Wir deklarieren eine neue Matrix ret der gleichen Größe wie die Eingabe.
  • Verschachtelte Schleifen: Wir verwenden eine verschachtelte Schleife, um jedes Element der Matrix zu durchlaufen.
  • Drehlogik: Für jedes Element an der Position (i, j) ordnen wir es der neuen Position (j, n - i - 1) zu. Diese Formel hilft, die Elemente korrekt um 90 Grad im Uhrzeigersinn zu drehen.

Schritt 4: Funktion testen

Sie können die Funktion testen, indem Sie sie aufrufen und die gedrehte Matrix ausgeben:

int[,] rotated = RotateMatrix(array, 4);

Stellen Sie sicher, dass Sie eine Methode implementieren, um die Matrix zur Überprüfung auszugeben.

Fazit

Das Drehen eines zweidimensionalen Arrays ist eine unkomplizierte Aufgabe, sobald Sie das Mapping der Indizes verstehen. Während der aktuelle Ansatz eine Laufzeitkomplexität von O(n^2) hat, ist die Optimierung von Algorithmen für größere Matrizen (wie 10000x10000) eine fortlaufende Diskussion in den Bereichen Algorithmen und Datenstrukturen.

Jetzt können Sie jedes zweidimensionale Array in C# selbstbewusst drehen. Viel Spaß beim Programmieren!