algorithmmatrixmultidimensional-array

How do you rotate a two dimensional array?


Inspired by Raymond Chen's post, say you have a 4x4 two dimensional array, write a function that rotates it 90 degrees. Raymond links to a solution in pseudo code, but I'd like to see some real world stuff.

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

Becomes:

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

Solution

  • Here it is in C#

    int[,] array = new int[4,4] {
        { 1,2,3,4 },
        { 5,6,7,8 },
        { 9,0,1,2 },
        { 3,4,5,6 }
    };
    
    int[,] rotated = RotateMatrix(array, 4);
    
    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;
    }