矩阵转置
1 package test; 2 public class Arithmetic3 3 { 4 //声明不可改变的全局变量 5 static final int p=0; 6 static void arith(int[][] arr) 7 { 8 //定义一个以最大列为标准的数组 9 int[][] newArr=new int[arr[p].length][arr[p].length]; 10 //定义一个以最大行为标准的数组 11 int[][] newArr1=new int[arr.length][arr.length]; 12 //将arr数组值赋给新数组newArr或newArr1 13 for(int i=0;i<arr.length;i++) 14 { 15 for(int j=0;j<arr[p].length;j++) 16 { 17 if(arr.length<=arr[p].length) 18 newArr[i][j]=arr[i][j]; 19 else 20 newArr1[i][j]=arr[i][j]; 21 } 22 } 23 24 //两种情况下的转置 25 if(arr.length<=arr[p].length) 26 { 27 //newArr矩阵转置 28 for(int i=0;i<arr[p].length;i++) 29 { 30 for(int j=i;j<arr[p].length;j++) 31 { 32 if(i!=j) 33 { 34 int temp=newArr[i][j]; 35 newArr[i][j]=newArr[j][i]; 36 newArr[j][i]=temp; 37 } 38 } 39 } 40 } 41 else 42 { 43 //newArr1矩阵转置 44 for(int i=0;i<arr.length;i++) 45 { 46 for(int j=i;j<arr.length;j++) 47 { 48 if(i!=j) 49 { 50 int temp=newArr1[i][j]; 51 newArr1[i][j]=newArr1[j][i]; 52 newArr1[j][i]=temp; 53 } 54 } 55 } 56 } 57 58 //定义一个新的非标准数组,作为最后转置后的输出矩阵 59 int[][] newArr2=new int[arr[p].length][arr.length]; 60 //将newArr或newArr1数据赋给newArr2 61 for(int i=0;i<arr[p].length;i++) 62 { 63 for(int j=0;j<arr.length;j++) 64 { 65 if(arr.length<=arr[p].length) 66 newArr2[i][j]=newArr[i][j]; 67 else 68 newArr2[i][j]=newArr1[i][j]; 69 } 70 } 71 72 //输出转置后的矩阵 73 outputArr(newArr2); 74 } 75 76 //定义输出数组的函数模块 77 static void outputArr(int[][] arr) 78 { 79 for(int i=0;i<arr.length;i++) 80 { 81 for(int j=0;j<arr[p].length;j++) 82 { 83 buWei(arr[i][j]); 84 if((j+1)%arr[p].length==0) 85 System.out.println(); 86 } 87 } 88 } 89 90 //空格补位函数,保证矩阵输出后排列整齐 91 static void buWei(int x) 92 { 93 if(x>=0 && x<10) 94 System.out.print(" "+x); 95 else if(x<100) 96 System.out.print(" "+x); 97 else if(x<1000) 98 System.out.print(" "+x); 99 else if(x<10000) 100 System.out.print(" "+x); 101 else if(x<100000) 102 System.out.print(" "+x); 103 else if(x<1000000) 104 System.out.print(" "+x); 105 } 106 107 //主函数 108 public static void main(String[] args) 109 { 110 //要转置的矩阵 111 int[][] a={{11,34,5,56}, 112 {4,54,43,0}, 113 {23,6,38,8}, 114 {25,9,36,8}, 115 {25,9,35,8}}; 116 System.out.println(" 原矩阵"); 117 //输出原矩阵 118 outputArr(a); 119 System.out.println("\n 转置后的矩阵"); 120 //输出转置后的矩阵 121 arith(a); 122 } 123 }