• java 矩阵转置算法


    工作中用到了行列转置,把这两种情况的算法记下来,以便后用

    1.行列数相等的转置

     1 /**
     2  * @description 矩阵转置
     3  * @author oldmonk
     4  * @time   2017年8月18日
     5  */
     6 public class test {
     7     
     8     public static void main(String [] args) {
     9         int data [][] = new int [] [] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } } ;
    10         System.out.println("----------------转置前------------------------") ;
    11         print1(data) ;
    12         reverse(data) ;
    13         System.out.println("----------------转置后------------------------") ;
    14         print1(data) ;
    15     }
    16     
    17     // 将矩阵转置
    18     public static void reverse(int temp [][]) {
    19         for (int i = 0; i < temp.length; i++) {
    20             for (int j = i; j < temp[i].length; j++) {
    21                 int k = temp[i][j] ;
    22                 temp[i][j] = temp[j][i] ;
    23                 temp[j][i] = k ;
    24             }
    25         }
    26     }
    27     
    28     // 将矩阵输出
    29     public static void print1(int temp [][]) {
    30         for (int i = 0; i < temp.length; i++) {
    31             for (int j = 0; j < temp[i].length; j++) {
    32                 System.out.print(temp[i][j] + "	") ;
    33             }
    34             System.out.println() ;
    35         }
    36     }
    37 }

       测试结果:

       

    2.任意数组转置

     1 /**
     2  * @description 任意数组转置
     3  * @author oldmonk
     4  * @time   2017年8月18日
     5  */
     6 public class test2 {
     7     
     8     public static void main(String [] args)// 测试
     9     {
    10         double [][] TestMatrix = { { 1, 22, 34, 22 }, { 1, 11, 5, 21 }, { 7, 2, 13, 19 } } ;
    11         double [][] MatrixC = Transpose(TestMatrix, 3, 4) ;
    12         
    13         System.out.println("-------转置前---------") ;
    14         myPrint(TestMatrix);
    15         System.out.println("-------转置后---------") ;
    16         myPrint(MatrixC);
    17     }
    18     
    19     /**
    20      * @descript  任意二维数组转置
    21      * @author    xujingyang
    22      * @time      2017年8月17日
    23      */
    24     public static double [][] Transpose(double [][] Matrix, int Line, int List) {
    25         double [][] MatrixC = new double [List] [Line] ;
    26         for (int i = 0; i < Line; i++) {
    27             for (int j = 0; j < List; j++) {
    28                 MatrixC[j][i] = Matrix[i][j] ;
    29             }
    30         }
    31         return MatrixC ;
    32     }
    33     
    34     // 将矩阵输出
    35     public static void myPrint(double temp [][]) {
    36         for (int i = 0; i < temp.length; i++) {
    37             for (int j = 0; j < temp[i].length; j++) {
    38                 System.out.print(temp[i][j] + "	") ;
    39             }
    40             System.out.println() ;
    41         }
    42     }
    43 }

     测试结果:

       

     

     

     

  • 相关阅读:
    (原创)代码分析-DataGrid实现增删(带提示)改和分页
    (原创)webform页面间传值的特殊方法
    (原创)如何把数据放到web不能访问的文件夹中并给用户下载?
    MediaWiki如何重置用户密码
    伟大的程序员是怎样炼成的?
    Java多线程(一)、多线程的基本概念和使用
    Android杂谈Activity、Window、View的关系
    Android LayoutInflater学习
    10条不可不知的手机礼仪 看看你犯过哪几项?
    Java支持的字符集[Code]
  • 原文地址:https://www.cnblogs.com/xujingyang/p/7387843.html
Copyright © 2020-2023  润新知