Sunday, October 6, 2024
Google search engine
HomeData Modelling & AIC++ Program To Find Transpose of a Matrix

C++ Program To Find Transpose of a Matrix

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

Example:

matrix-transpose

1. For Square Matrix 

The below program finds the transpose of A[][] and stores the result in B[][], we can change N for a different dimension.  

C++




// C++ Program to find the 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}};
 
    int B[N][N], i, j;
 
    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;
}


Output

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

The complexity of the above method

Time Complexity: O(N*N) as two nested loops are running.

Space Complexity: O(N*N) as 2d array is created to store transpose.

2. For Rectangular Matrix

The below program finds the transpose of A[][] and stores the result in B[][]. 

C++




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


Output

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

The complexity of the above method

Time Complexity: O(N*M) as two nested loops are running.

Space Complexity: O(N*M) as 2d array is created to store transpose.

3. In-Place for Square Matrix

Below is the implementation of the method:

C++




// C++ program to implement
// the above approach
#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]);
}
 
// Driver code
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;
}


Output

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

The complexity of the above method

Time complexity: O(n)

  • Transpose has a time complexity of O(n + m), where n is the number of columns and m is the number of non-zero elements in the matrix. 
  • The computational time for transposing of a matrix using an identity matrix as a reference matrix is O(m*n). 
  • Suppose, if the given matrix is a square matrix, the running time will be O(n2).

Auxiliary space: O(1).

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments