Rotate Array

Given an NxN array, write a function that would do an in-place rotate by 90 degrees.

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;
}

In-place solution:
void RotateBy90(int (*arr)[N])
{
    for (int j = 0; j < N/2; j++)
    {
        for (int i = j; i < N - j - 1; i++)
            RotateElement(arr, i, j);
    }
}
 
void RotateElement(int (*arr)[N], int iint j)
{
    int temp = arr[i][j];
    arr[i][j] = arr[N - j - 1][i];
    arr[N - j - 1][i] = arr[N - i - 1][N - j - 1];
    arr[N - i - 1][N - j - 1] = arr[j][N - i - 1];
    arr[j][N - i - 1] = temp;
}