Transpose of a matrix is obtained by changing rows to columns and columns to rows. In other words, transpose of A[][] is obtained by changing A[i][j] to A[j][i].
For Square Matrix: The below program finds transpose of A[][] and stores the result in B[][], we can change N for different dimension.
C++
#include <bits/stdc++.h>
using
namespace
std;
#define N 4
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];
}
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;
}
C
#include <stdio.h>
#define N 4
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];
}
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);
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
class
GFG
{
static
final
int
N =
4
;
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];
}
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;
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"
);
}
}
}
Python3
N
=
4
def
transpose(A,B):
for
i
in
range
(N):
for
j
in
range
(N):
B[i][j]
=
A[j][i]
A
=
[ [
1
,
1
,
1
,
1
],
[
2
,
2
,
2
,
2
],
[
3
,
3
,
3
,
3
],
[
4
,
4
,
4
,
4
]]
B
=
[[
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
],[
0
,
0
,
0
,
0
]]
transpose(A, B)
print
(
"Result matrix is"
)
for
i
in
range
(N):
for
j
in
range
(N):
print
(B[i][j],
" "
, end
=
'')
print
()
C#
using
System;
class
GFG
{
static
int
N = 4;
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];
}
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];
transpose(A, B);
Console.Write(
"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"
);
}
}
}
PHP
<?php
function
transpose(&
$A
, &
$B
)
{
$N
= 4;
for
(
$i
= 0;
$i
<
$N
;
$i
++)
for
(
$j
= 0;
$j
<
$N
;
$j
++)
$B
[
$i
][
$j
] =
$A
[
$j
][
$i
];
}
$A
=
array
(
array
(1, 1, 1, 1),
array
(2, 2, 2, 2),
array
(3, 3, 3, 3),
array
(4, 4, 4, 4));
$N
= 4;
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"
;
}
?>
Javascript
<script>
var
N = 4;
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];
}
var
A = [
[ 1, 1, 1, 1 ],
[ 2, 2, 2, 2 ],
[ 3, 3, 3, 3 ],
[ 4, 4, 4, 4 ] ];
var
B = Array(4).fill(0);
for
(let i = 0; i < N; i++){
B[i] =
new
Array(N);
}
transpose(A, B);
document.write(
"Result matrix is <br/>"
);
for
(let i = 0; i < N; i++)
{
for
(let j = 0; j < N; j++)
document.write(B[i][j] +
" "
);
document.write(
"<br/>"
);
}
</script>
Output
Result matrix is
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Time complexity: O(N x N).Auxiliary Space : O(N x N).
The below program finds transpose of A[][] and stores the result in B[][].
C++
#include <bits/stdc++.h>
using
namespace
std;
#define M 3
#define N 4
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];
}
int
main()
{
int
A[M][N] = { { 1, 1, 1, 1 },
{ 2, 2, 2, 2 },
{ 3, 3, 3, 3 } };
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;
}
C
#include <stdio.h>
#define M 3
#define N 4
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];
}
int
main()
{
int
A[M][N] = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3}};
int
B[N][M], i, j;
transpose(A, B);
printf
(
"Result matrix is \n"
);
for
(i = 0; i < N; i++)
{
for
(j = 0; j < M; j++)
printf
(
"%d "
, B[i][j]);
printf
(
"\n"
);
}
return
0;
}
Java
class
GFG
{
static
final
int
M =
3
;
static
final
int
N =
4
;
static
void
transpose(
int
A[][],
int
B[][])
{
int
i, j;
for
(i =
0
; i < N; i++)
for
(j =
0
; j < M; j++)
B[i][j] = A[j][i];
}
public
static
void
main (String[] args)
{
int
A[][] = { {
1
,
1
,
1
,
1
},
{
2
,
2
,
2
,
2
},
{
3
,
3
,
3
,
3
}};
int
B[][] =
new
int
[N][M], i, j;
transpose(A, B);
System.out.print(
"Result matrix is \n"
);
for
(i =
0
; i < N; i++)
{
for
(j =
0
; j < M; j++)
System.out.print(B[i][j] +
" "
);
System.out.print(
"\n"
);
}
}
}
Python3
M
=
3
N
=
4
def
transpose(A, B):
for
i
in
range
(N):
for
j
in
range
(M):
B[i][j]
=
A[j][i]
A
=
[ [
1
,
1
,
1
,
1
],
[
2
,
2
,
2
,
2
],
[
3
,
3
,
3
,
3
]]
B
=
[[
0
for
x
in
range
(M)]
for
y
in
range
(N)]
transpose(A, B)
print
(
"Result matrix is"
)
for
i
in
range
(N):
for
j
in
range
(M):
print
(B[i][j],
" "
, end
=
'')
print
()
C#
using
System;
class
GFG {
static
int
M = 3;
static
int
N = 4;
static
void
transpose(
int
[,]A,
int
[,]B)
{
int
i, j;
for
(i = 0; i < N; i++)
for
(j = 0; j < M; j++)
B[i,j] = A[j,i];
}
public
static
void
Main ()
{
int
[,]A = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3}};
int
[,]B=
new
int
[N,M];
transpose(A, B);
Console.WriteLine(
"Result matrix is \n"
);
for
(
int
i = 0; i < N; i++)
{
for
(
int
j = 0; j < M; j++)
Console.Write(B[i,j] +
" "
);
Console.Write(
"\n"
);
}
}
}
PHP
<?php
function
transpose(&
$A
, &
$B
)
{
$N
= 4;
$M
= 3;
for
(
$i
= 0;
$i
<
$N
;
$i
++)
for
(
$j
= 0;
$j
<
$M
;
$j
++)
$B
[
$i
][
$j
] =
$A
[
$j
][
$i
];
}
$A
=
array
(
array
(1, 1, 1, 1),
array
(2, 2, 2, 2),
array
(3, 3, 3, 3));
$N
= 4;
$M
= 3;
transpose(
$A
,
$B
);
echo
"Result matrix is \n"
;
for
(
$i
= 0;
$i
<
$N
;
$i
++)
{
for
(
$j
= 0;
$j
<
$M
;
$j
++)
{
echo
$B
[
$i
][
$j
];
echo
" "
;
}
echo
"\n"
;
}
?>
Javascript
<script>
var
M = 3;
var
N = 4;
function
transpose(A , B) {
var
i, j;
for
(i = 0; i < N; i++)
for
(j = 0; j < M; j++)
B[i][j] = A[j][i];
}
var
A = [ [ 1, 1, 1, 1 ], [ 2, 2, 2, 2 ], [ 3, 3, 3, 3 ]];
var
B = Array(N);
for
(i=0;i<N;i++)
B[i] =Array(M).fill(0);
transpose(A, B);
document.write(
"Result matrix is <br/>"
);
for
(i = 0; i < N; i++) {
for
(j = 0; j < M; j++)
document.write(B[i][j] +
" "
);
document.write(
"<br/>"
);
}
</script>
Output
Result matrix is
1 2 3
1 2 3
1 2 3
1 2 3
Time complexity: O(M x N).Auxiliary Space: O(M x N),
In-Place for Square Matrix:
C++
#include <bits/stdc++.h>
using
namespace
std;
#define N 4
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
class
GFG
{
static
final
int
N =
4
;
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;
}
}
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
N
=
4
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]
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
()
C#
using
System;
class
GFG {
static
int
N = 4;
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;
}
}
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();
}
}
}
PHP
<?php
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
;
}
}
$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"
;
}
?>
Javascript
<script>
var
N = 4;
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;
}
}
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/>"
);
}
</script>
Output
Modified matrix is
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
Time complexity: O(N x N).Auxiliary Space: O(1). since no extra space has been taken.
Note- 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 transpose of a matrix using identity matrix as reference matrix is O(m*n). Suppose, if the given matrix is a square matrix, the running time will be O(n2 ).