Skip to content
Related Articles
Get the best out of our app
GeeksforGeeks App
Open App
geeksforgeeks
Browser
Continue

Related Articles

Program to Interchange Diagonals of Matrix

Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article

Given a square matrix of order n*n, you have to interchange the elements of both diagonals. 

Examples : 

Input : matrix[][] = {1, 2, 3,
                      4, 5, 6,
                      7, 8, 9} 
Output : matrix[][] = {3, 2, 1,
                       4, 5, 6,
                       9, 8, 7} 

Input : matrix[][] = {4,  2,  3,  1,
                      5,  7,  6,  8,
                      9, 11, 10, 12,
                     16, 14, 15, 13} 
Output : matrix[][] = {1,  2,  3,  4,
                       5,  6,  7,  8,
                       9, 10, 11, 12,
                      11, 14, 15, 16}

Explanation : Idea behind interchanging diagonals of a square matrix is simple. Iterate from 0 to n-1 and for each iteration you have to swap a[i][i] and a[i][n-i-1].

Implementation:

C++




// C++ program to interchange
// the diagonals of matrix
#include<bits/stdc++.h>
using namespace std;
 
#define N 3
 
// Function to interchange diagonals
void interchangeDiagonals(int array[][N])
{
    // swap elements of diagonal
    for (int i = 0; i < N; ++i)
    if (i != N / 2)
    swap(array[i][i], array[i][N - i - 1]);
 
    for (int i = 0; i < N; ++i)
    {
    for (int j = 0; j < N; ++j)
            cout<<" "<< array[i][j];
    cout<<endl;
    }
}
 
// Driver Code
int main()
{
    int array[N][N] = {4, 5, 6,
                    1, 2, 3,
                    7, 8, 9};
    interchangeDiagonals(array);
    return 0;
}
 
// This code is contributed by noob2000.

C




// C program to interchange
// the diagonals of matrix
#include<bits/stdc++.h>
using namespace std;
 
#define N 3
 
// Function to interchange diagonals
void interchangeDiagonals(int array[][N])
{
    // swap elements of diagonal
    for (int i = 0; i < N; ++i)
    if (i != N / 2)
    swap(array[i][i], array[i][N - i - 1]);
 
    for (int i = 0; i < N; ++i)
    {
    for (int j = 0; j < N; ++j)
            printf(" %d", array[i][j]);
    printf("\n");
    }
}
 
// Driver Code
int main()
{
    int array[N][N] = {4, 5, 6,
                    1, 2, 3,
                    7, 8, 9};
    interchangeDiagonals(array);
    return 0;
}

Java




// Java program to interchange
// the diagonals of matrix
import java.io.*;
 
class GFG
{
    public static int N = 3;
     
    // Function to interchange diagonals
    static void interchangeDiagonals(int array[][])
    {
        // swap elements of diagonal
        for (int i = 0; i < N; ++i)
            if (i != N / 2)
            {
                int temp = array[i][i];
                array[i][i] = array[i][N - i - 1];
                array[i][N - i - 1] = temp;
            }
 
        for (int i = 0; i < N; ++i)
        {
            for (int j = 0; j < N; ++j)
                System.out.print(array[i][j]+" ");
            System.out.println();
        }
    }
     
    // Driver Code
    public static void main (String[] args)
    {
        int array[][] = { {4, 5, 6},
                        {1, 2, 3},
                        {7, 8, 9}
                        };
        interchangeDiagonals(array);
    }
}
 
// This code is contributed by Pramod Kumar

Python3




# Python program to interchange
# the diagonals of matrix
N = 3;
 
# Function to interchange diagonals
def interchangeDiagonals(array):
 
    # swap elements of diagonal
    for i in range(N):
        if (i != N / 2):
            temp = array[i][i];
            array[i][i] = array[i][N - i - 1];
            array[i][N - i - 1] = temp;
         
    for i in range(N):
        for j in range(N):
            print(array[i][j], end = " ");
        print();
 
# Driver Code
if __name__ == '__main__':
    array = [ 4, 5, 6 ],[ 1, 2, 3 ],[ 7, 8, 9 ];
    interchangeDiagonals(array);
     
# This code is contributed by Rajput-Ji

C#




// C# program to interchange
// the diagonals of matrix
using System;
 
class GFG
{
    public static int N = 3;
     
    // Function to interchange diagonals
    static void interchangeDiagonals(int [,]array)
    {
        // swap elements of diagonal
        for (int i = 0; i < N; ++i)
            if (i != N / 2)
            {
                int temp = array[i, i];
                array[i, i] = array[i, N - i - 1];
                array[i, N - i - 1] = temp;
            }
 
        for (int i = 0; i < N; ++i)
        {
            for (int j = 0; j < N; ++j)
                Console.Write(array[i, j]+" ");
            Console.WriteLine();
        }
    }
     
    // Driver Code
    public static void Main ()
    {
        int [,]array = { {4, 5, 6},
                        {1, 2, 3},
                        {7, 8, 9}
                        };
        interchangeDiagonals(array);
    }
}
 
// This code is contributed by vt_m.

Javascript




<script>
// Javascript program to interchange
// the diagonals of matrix
let N = 3;
 
// Function to interchange diagonals
function interchangeDiagonals(array)
{
 
    // swap elements of diagonal
    for (let i = 0; i < N; ++i)
    if (i != parseInt(N / 2)) {
        let temp = array[i][i];
        array[i][i] = array[i][N - i - 1];
        array[i][N - i - 1] = temp;
    }
    for (let i = 0; i < N; ++i)
    {
    for (let j = 0; j < N; ++j)
            document.write(" " + array[i][j]);
    document.write("<br>");
    }
}
 
// Driver Code
    let array = [[4, 5, 6],
                    [1, 2, 3],
                    [7, 8, 9]];
    interchangeDiagonals(array);
 
// This code is contributed by subham348.
</script>

Output

 6 5 4
 1 2 3
 9 8 7

Time Complexity: O(N*N), as we are using nested loops for traversing the matrix.
Auxiliary Space: O(1), as we are not using any extra space.

This article is contributed by Shivam Pradhan (anuj_charm). If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 


My Personal Notes arrow_drop_up
Last Updated : 14 Jul, 2022
Like Article
Save Article
Similar Reads
Related Tutorials