• 矩阵转置


      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("
         转置后的矩阵");
    120         //输出转置后的矩阵
    121         arith(a);
    122     }
    123 }
  • 相关阅读:
    设计模式之简单工厂模式
    设计模式之工厂方法模式
    设计模式之抽象工厂模式
    面向对象设计原则
    Spring与Struts整合
    Spring与Hibernate、Mybatis整合
    Java中执行外部命令
    Spring3之Security
    综合练习:词频统计
    组合数据类型综合练习
  • 原文地址:https://www.cnblogs.com/joeshine/p/4463586.html
Copyright © 2020-2023  润新知