# Rotate a matrix by 90 degree in clockwise direction in C

## Rotate a matrix by 90 degree in clockwise direction in C

Here, in this page we will discuss the program to rotate a matrix by 90 degree in clockwise direction in C Programming Language. We are given with matrix and we need to print the rotated matrix. We will discuss the approaches that solve this problem in constant space.

## Method 1 :

• First transpose the matrix.
• For this run a loop from i=0 to n and another loop from j=i+1 to j
• After doing this, now iterate over rows and reverse each rows.
• After this print the entire matrix (that gets rotated).

## Time and Space Complexity :

• Time-Complexity : O(n*n)
• Space-Complexity : O(1)

### Method 1 : Code in C

Run
```#include <stdio.h>

void swap(int *x, int *y){
int temp = *x;
*x = *y;
*y= temp;
}
int main(){

int n=4;
int mat[4][4]= { { 1, 2, 3, 4 },{ 5, 6, 7, 8 },{ 9, 10, 11, 12 },{ 13, 14, 15, 16 } };

//Tranposing the matrix
for(int i=0; i<n; i++){
for(int j=i+1; j<n; j++)
swap(&mat[i][j], &mat[j][i]);
}

//Reversing each row of the matrix
for(int i=0; i<n; i++){
for(int j=0; j<n/2; j++){
swap(&mat[i][j], &mat[i][n-j-1]);
}
}

//Print the matrix
printf("Rotated Matrix :\n");
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
printf("%d ",mat[i][j]);
}
printf("\n");
}
}```
`OutputRotated Matrix is :13 9 5 114 10 6 215 11 7 316 12 8 4`

## Method 2 :

• First rotate the matrix about its main diagonal.
• For this run a loop from i=0 to n and another loop from j=0 to 1, and swap (mat[i][j], mat[j][i])
• Now, rotate the matrix about middle column.
• For this run a loop from i=0 to n, and another loop from j=0 to n/2 and swap (mat[i][j],, mat[i][n-j-1]).
• After this print the entire matrix (that gets rotated).

## Time and Space Complexity :

• Time-Complexity : O(n*n)
• Space-Complexity : O(1)

### Method 2 : Code in C

Run
```#include <stdio.h>

void swap(int *x, int *y){
int temp = *x;
*x = *y;
*y= temp;
}
int main(){

int n=4;
int mat[4][4]= { { 1, 2, 3, 4 },{ 5, 6, 7, 8 },{ 9, 10, 11, 12 },{ 13, 14, 15, 16 } };

//Rotate the matrix about the main diagonal
for(int i=0; i<n; i++){
for(int j=0; j<i; j++)
swap(&mat[i][j], &mat[j][i]);
}

//Rotate the matrix about middle column
for(int i=0; i<n; i++){
for(int j=0; j<n/2; j++){
swap(&mat[i][j], &mat[i][n-j-1]);
}
}

//Print the matrix
printf("Rotated Matrix :\n");
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
printf("%d ",mat[i][j]);
}
printf("\n");
}
}```
`OutputRotated Matrix is :13 9 5 114 10 6 215 11 7 316 12 8 4`