Skip to content
Related Articles

Related Articles

Program to find transpose of a matrix

Improve Article
Save Article
  • Difficulty Level : Easy
  • Last Updated : 22 Sep, 2022
Improve Article
Save Article

Transpose of a matrix is obtained by changing rows to columns and columns to rows. In other words, transpose of A[N][M] is obtained by changing A[i][j] to A[j][i].

Example:

matrix-transpose

Approach: Follow the given steps to solve the problem:

  • Run a nested loop using two integer pointers i and j for 0 <= i < N and 0 <= j < M
  • Set B[i][j] equal to A[j][i]

Below is the implementation of the above approach:

C++




// C++ program to find
// transpose of a matrix
#include <bits/stdc++.h>
using namespace std;
#define N 4
 
// This function stores transpose
// of A[][] in B[][]
void transpose(int A[][N], int B[][N])
{
    int i, j;
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
            B[i][j] = A[j][i];
}
 
// Driver code
int main()
{
    int A[N][N] = { { 1, 1, 1, 1 },
                    { 2, 2, 2, 2 },
                    { 3, 3, 3, 3 },
                    { 4, 4, 4, 4 } };
 
    // Note dimensions of B[][]
    int B[N][N], i, j;
 
      // Function call
    transpose(A, B);
 
    cout << "Result matrix is \n";
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++)
            cout << " " << B[i][j];
 
        cout << "\n";
    }
    return 0;
}
 
// This code is contributed by shivanisinghss2110


C




// C program to find
// transpose of a matrix
 
#include <stdio.h>
#define N 4
 
// This function stores transpose of A[][] in B[][]
void transpose(int A[][N], int B[][N])
{
    int i, j;
    for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
            B[i][j] = A[j][i];
}
 
// Driver code
int main()
{
    int A[N][N] = { { 1, 1, 1, 1 },
                    { 2, 2, 2, 2 },
                    { 3, 3, 3, 3 },
                    { 4, 4, 4, 4 } };
 
    // Note dimensions of B[][]
    int B[N][N], i, j;
 
      // Function call
    transpose(A, B);
 
    printf("Result matrix is \n");
    for (i = 0; i < N; i++) {
        for (j = 0; j < N; j++)
            printf("%d ", B[i][j]);
        printf("\n");
    }
 
    return 0;
}


Java




// Java Program to find
// transpose of a matrix
 
class GFG {
    static final int N = 4;
 
    // This function stores transpose
    // of A[][] in B[][]
    static void transpose(int A[][], int B[][])
    {
        int i, j;
        for (i = 0; i < N; i++)
            for (j = 0; j < N; j++)
                B[i][j] = A[j][i];
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int A[][] = { { 1, 1, 1, 1 },
                      { 2, 2, 2, 2 },
                      { 3, 3, 3, 3 },
                      { 4, 4, 4, 4 } };
 
        int B[][] = new int[N][N], i, j;
 
          // Function call
        transpose(A, B);
 
        System.out.print("Result matrix is \n");
        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++)
                System.out.print(B[i][j] + " ");
            System.out.print("\n");
        }
    }
}
 
// This code is contributed by Anant Agarwal.


Python3




# Python3 Program to find
# transpose of a matrix
 
N = 4
 
# This function stores
# transpose of A[][] in B[][]
 
 
def transpose(A, B):
 
    for i in range(N):
        for j in range(N):
            B[i][j] = A[j][i]
 
 
# Driver code
if __name__ == '__main__':
  A = [[1, 1, 1, 1],
       [2, 2, 2, 2],
       [3, 3, 3, 3],
       [4, 4, 4, 4]]
 
 
  # To store result
  B = [[0 for x in range(N)] for y in range(N)]
 
  # Function call
  transpose(A, B)
 
  print("Result matrix is")
  for i in range(N):
      for j in range(N):
          print(B[i][j], " ", end='')
      print()


C#




// C# Program to find
// transpose of a matrix
using System;
class GFG {
 
    static int N = 4;
 
    // This function stores transpose
    // of A[][] in B[][]
    static void transpose(int[, ] A, int[, ] B)
    {
        int i, j;
        for (i = 0; i < N; i++)
            for (j = 0; j < N; j++)
                B[i, j] = A[j, i];
    }
 
    // Driver code
    public static void Main()
    {
        int[, ] A = { { 1, 1, 1, 1 },
                      { 2, 2, 2, 2 },
                      { 3, 3, 3, 3 },
                      { 4, 4, 4, 4 } };
 
        int[, ] B = new int[N, N];
 
          // Function call
        transpose(A, B);
 
        Console.WriteLine("Result matrix is \n");
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++)
                Console.Write(B[i, j] + " ");
            Console.Write("\n");
        }
    }
}
 
// This code is contributed by nitin mittal


PHP




<?php
 
// This function stores transpose
// of A[][] in B[][]
function transpose(&$A, &$B)
{
    $N = 4;
    for ($i = 0; $i < $N; $i++)
        for ($j = 0; $j < $N; $j++)
            $B[$i][$j] = $A[$j][$i];
}
 
// Driver code
 
$A = array(array(1, 1, 1, 1),
           array(2, 2, 2, 2),
           array(3, 3, 3, 3),
           array(4, 4, 4, 4));
 
$N = 4;
 
// Function call
transpose($A, $B);
 
echo "Result matrix is \n";
for ($i = 0; $i < $N; $i++)
{
    for ($j = 0; $j < $N; $j++)
    {
    echo $B[$i][$j];
    echo " ";
    }
    echo "\n";
}
 
// This code is contributed
// by Shivi_Aggarwal
?>


Javascript




<script>
// javascript Program to find
// transpose of a matrix   
 
     var N = 4;
 
    // This function stores transpose
    // of A in B
    function transpose(A , B) {
        var i, j;
        for (i = 0; i < N; i++)
            for (j = 0; j < N; j++)
                B[i][j] = A[j][i];
    }
 
    // Driver code
     
        var A = [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], [ 3, 3, 3, 3 ], [4, 4, 4, 4]];
 
        var B = Array(N);
        for(i=0;i<N;i++)
        B[i] =Array(N).fill(0);
 
        transpose(A, B);
 
        document.write("Result matrix is <br/>");
        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++)
                document.write(B[i][j] + " ");
            document.write("<br/>");
        }
// This code contributed by Rajput-Ji
</script>


Output

Result matrix is 
 1 2 3 4
 1 2 3 4
 1 2 3 4
 1 2 3 4

Time complexity: O(M x N).
Auxiliary Space: O(M x N), since M x N extra space has been used.

Program to find the transpose of a matrix using constant space:

Follow the given steps to solve the problem:

  • Run a nested loop using two integer pointers i and j for 0 <= i < N and 0 <= j < M
  • Swap A[i][j] with A[j][i]

Below is the implementation of the above approach:

C++




#include <bits/stdc++.h>
using namespace std;
 
#define N 4
 
// Converts A[][] to its transpose
void transpose(int A[][N])
{
    for (int i = 0; i < N; i++)
        for (int j = i + 1; j < N; j++)
            swap(A[i][j], A[j][i]);
}
 
int main()
{
    int A[N][N] = { { 1, 1, 1, 1 },
                    { 2, 2, 2, 2 },
                    { 3, 3, 3, 3 },
                    { 4, 4, 4, 4 } };
 
    transpose(A);
 
    printf("Modified matrix is \n");
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++)
            printf("%d ", A[i][j]);
        printf("\n");
    }
 
    return 0;
}


Java




// Java Program to find
// transpose of a matrix
 
class GFG {
    static final int N = 4;
 
    // Finds transpose of A[][] in-place
    static void transpose(int A[][])
    {
        for (int i = 0; i < N; i++)
            for (int j = i + 1; j < N; j++) {
                int temp = A[i][j];
                A[i][j] = A[j][i];
                A[j][i] = temp;
            }
    }
 
    // Driver code
    public static void main(String[] args)
    {
        int A[][] = { { 1, 1, 1, 1 },
                      { 2, 2, 2, 2 },
                      { 3, 3, 3, 3 },
                      { 4, 4, 4, 4 } };
 
        transpose(A);
 
        System.out.print("Modified matrix is \n");
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++)
                System.out.print(A[i][j] + " ");
            System.out.print("\n");
        }
    }
}


Python3




# Python3 Program to find
# transpose of a matrix
 
N = 4
 
# Finds transpose of A[][] in-place
 
 
def transpose(A):
 
    for i in range(N):
        for j in range(i+1, N):
            A[i][j], A[j][i] = A[j][i], A[i][j]
 
 
# driver code
A = [[1, 1, 1, 1],
     [2, 2, 2, 2],
     [3, 3, 3, 3],
     [4, 4, 4, 4]]
 
transpose(A)
 
print("Modified matrix is")
for i in range(N):
    for j in range(N):
        print(A[i][j], " ", end='')
    print()
 
# This code is contributed
# by Anant Agarwal.


C#




// C# Program to find transpose of
// a matrix
using System;
 
class GFG {
 
    static int N = 4;
 
    // Finds transpose of A[][] in-place
    static void transpose(int[, ] A)
    {
        for (int i = 0; i < N; i++)
            for (int j = i + 1; j < N; j++) {
                int temp = A[i, j];
                A[i, j] = A[j, i];
                A[j, i] = temp;
            }
    }
 
    // Driver code
    public static void Main()
    {
        int[, ] A = { { 1, 1, 1, 1 },
                      { 2, 2, 2, 2 },
                      { 3, 3, 3, 3 },
                      { 4, 4, 4, 4 } };
 
        transpose(A);
 
        Console.WriteLine("Modified matrix is ");
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++)
                Console.Write(A[i, j] + " ");
 
            Console.WriteLine();
        }
    }
}
 
// This code is contributed by anuj_67.


PHP




<?php
// Converts A[][] to its transpose
function transpose(&$A)
{
    $N = 4;
    for ($i = 0; $i < $N; $i++)
        for ($j = $i + 1; $j < $N; $j++)
            {
                $temp = $A[$i][$j];
                $A[$i][$j] = $A[$j][$i];
                $A[$j][$i] = $temp;
            }
}
 
// Driver Code
$N = 4;
$A = array(array(1, 1, 1, 1),
            array(2, 2, 2, 2),
           array(3, 3, 3, 3),
           array(4, 4, 4, 4));
 
transpose($A);
 
echo "Modified matrix is " . "\n";
for ($i = 0; $i < $N; $i++)
{
    for ($j = 0; $j < $N; $j++)
        echo $A[$i][$j] . " ";
    echo "\n";
}
 
// This code is contributed
// by Akanksha Rai(Abby_akku)
?>


Javascript




<script>
 
// JavaScript Program to find
// transpose of a matrix   
var N = 4;
 
    // Finds transpose of A in-place
    function transpose(A) {
        for (i = 0; i < N; i++)
            for (j = i + 1; j < N; j++) {
                var temp = A[i][j];
                A[i][j] = A[j][i];
                A[j][i] = temp;
            }
    }
 
    // Driver code
     
        var A = [ [ 1, 1, 1, 1 ],
                  [ 2, 2, 2, 2 ],
                  [ 3, 3, 3, 3 ],
                  [ 4, 4, 4, 4 ] ];
 
        transpose(A);
 
        document.write("Modified matrix is <br/>");
        for (i = 0; i < N; i++) {
            for (j = 0; j < N; j++)
                document.write(A[i][j] + " ");
            document.write("\<br/>");
        }
 
// This code is contributed by aashish1995
 
</script>


Output

Modified matrix is 
1 2 3 4 
1 2 3 4 
1 2 3 4 
1 2 3 4 

Time complexity: O(N2).
Auxiliary Space: O(1)


My Personal Notes arrow_drop_up
Related Articles

Start Your Coding Journey Now!