矩阵的转置是通过将行更改为列、将列更改为行来实现的。换句话说,A[][]的转置是通过将A[i][j]改变为A[j][i]来获得的。
null
对于方形矩阵:
下面的程序找到A[]]的转置,并将结果存储在B[]],我们可以改变N的不同维度。
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}}; int B[N][N], i, j; transpose(A, B); cout << "Result matrix is " ; for (i = 0; i < N; i++) { for (j = 0; j < N; j++) cout << " " << B[i][j]; cout << "" ; } 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]; } 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 " ); for (i = 0; i < N; i++) { for (j = 0; j < N; j++) printf ( "%d " , B[i][j]); printf ( "" ); } 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; transpose(A, B); System.out.print( "Result matrix is " ); for (i = 0 ; i < N; i++) { for (j = 0 ; j < N; j++) System.out.print(B[i][j] + " " ); System.out.print( "" ); } } } // 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 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 ]] # To store result transpose(A, B) print ( "Result matrix is" ) for i in range (N): for j in range (N): print (B[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; // 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 calling transpose(A, B); Console.Write( "Result matrix is " ); for ( int i = 0; i < N; i++) { for ( int j = 0; j < N; j++) Console.Write(B[i,j] + " " ); Console.Write( "" ); } } } // 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; transpose( $A , $B ); echo "Result matrix is " ; for ( $i = 0; $i < $N ; $i ++) { for ( $j = 0; $j < $N ; $j ++) { echo $B [ $i ][ $j ]; echo " " ; } echo "" ; } // 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(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/>" ); } // This code is contributed by gauravrajput1 </script> |
输出:
Result matrix is1 2 3 41 2 3 41 2 3 41 2 3 4
对于矩形矩阵:
下面的程序查找A[]]的转置,并将结果存储在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 " ; for (i = 0; i < N; i++) { for (j = 0; j < M; j++) cout << " " << B[i][j]; cout << "" ; } return 0; } // This code is contributed by shivanisinghss2110 |
C
#include <stdio.h> #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]; } 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); printf ( "Result matrix is " ); for (i = 0; i < N; i++) { for (j = 0; j < M; j++) printf ( "%d " , B[i][j]); printf ( "" ); } return 0; } |
JAVA
// Java Program to find // transpose of a matrix class GFG { static final int M = 3 ; 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 < M; 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 }}; int B[][] = new int [N][M], i, j; transpose(A, B); System.out.print( "Result matrix is " ); for (i = 0 ; i < N; i++) { for (j = 0 ; j < M; j++) System.out.print(B[i][j] + " " ); System.out.print( "" ); } } } // This code is contributed by Anant Agarwal. |
Python3
# Python3 Program to find # transpose of a matrix M = 3 N = 4 # This function stores # transpose of A[][] in B[][] def transpose(A, B): for i in range (N): for j in range (M): B[i][j] = A[j][i] # driver code A = [ [ 1 , 1 , 1 , 1 ], [ 2 , 2 , 2 , 2 ], [ 3 , 3 , 3 , 3 ]] # To store result 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#
// C# Program to find // transpose of a matrix using System; class GFG { static int M = 3; 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 < M; 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}}; int [,]B= new int [N,M]; transpose(A, B); Console.WriteLine( "Result matrix is " ); for ( int i = 0; i < N; i++) { for ( int j = 0; j < M; j++) Console.Write(B[i,j] + " " ); Console.Write( "" ); } } } // This code is contributed by nitin mittal |
PHP
<?php // This function stores transpose // of A[][] in B[][] 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 ]; } // Driver code $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 " ; for ( $i = 0; $i < $N ; $i ++) { for ( $j = 0; $j < $M ; $j ++) { echo $B [ $i ][ $j ]; echo " " ; } echo "" ; } // This code is contributed // by Shivi_Aggarwal ?> |
Javascript
<script> // javascript Program to find // transpose of a matrix var M = 3; 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 < M; j++) B[i][j] = A[j][i]; } // Driver code 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/>" ); } // This code contributed by Rajput-Ji </script> |
输出:
Result matrix is1 2 3 1 2 3 1 2 3 1 2 3
方阵已就位:
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 " ); for ( int i = 0; i < N; i++) { for ( int j = 0; j < N; j++) printf ( "%d " , A[i][j]); printf ( "" ); } 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 " ); for ( int i = 0 ; i < N; i++) { for ( int j = 0 ; j < N; j++) System.out.print(A[i][j] + " " ); System.out.print( "" ); } } } |
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 " . "" ; for ( $i = 0; $i < $N ; $i ++) { for ( $j = 0; $j < $N ; $j ++) echo $A [ $i ][ $j ] . " " ; echo "" ; } // 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> |
输出:
Modified matrix is1 2 3 41 2 3 41 2 3 41 2 3 4
注释- 转置的时间复杂度为O(n+m),其中n是列的数量,m是矩阵中非零元素的数量。使用单位矩阵作为参考矩阵的矩阵转置的计算时间为O(m*n)。假设,如果给定的矩阵是平方矩阵,则运行时间为O(n2)。
如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写评论
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END