博客
关于我
一个使用Java语言描述的矩阵旋转的例子
阅读量:362 次
发布时间:2019-03-04

本文共 1335 字,大约阅读时间需要 4 分钟。

一个把矩阵旋转输出的方法就是直接按照旋转以后的规律遍历输出

但有时候需要把矩阵旋转一工后续使用,如果不创建一个新的矩阵直接做原有矩阵基础上做旋转该如何操作呢

一个用java实现的算法

import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;public class PrintMatrix {    public static void main(String[] args) {        int N = Integer.parseInt(args[0]);        int[][] a = new int[N][N];        for (int i = 0; i < N; i++)            for (int j = 0; j < N; j++)                a[i][j] = StdIn.readInt();        transMatrix(a);        printMatrix(a);    }       public static void transMatrix(int[][] a) {        int N = a.length;        for (int i = 0; i < N / 2; i++)            for (int j = i; j < N - 1 - i; j++)                circleTrans(a, i, j);     }       public static void printMatrix(int[][] a) {        int N = a.length;        for (int i = 0; i < N; i++)            for (int j = 0; j < N; j++)                StdOut.printf((j == N - 1) ? "%4d\n" : "%4d", a[i][j]);    }       private static void circleTrans(int[][] a, int i, int j) {        int N = a.length;        int temp = a[i][j];        for (int m = 0; m < 3; m++) {            int x = N - 1 - j;            int y = i;            a[i][j] = a[x][y];            i = x;            j = y;            }           a[i][j] = temp;    }   }

运行结果

Press ENTER or type command to continue

1 2 3

3 4 6

7 8 9

   7   3   1

   8   4   2

   9   6   3

时间复杂度是 O(N^2)

空间复杂度是 O (1) 

转载地址:http://oabg.baihongyu.com/

你可能感兴趣的文章
Cannot read property '$el' of undefined at VueComponent
查看>>
Neo4j : 通过节点的 id属性 对节点进行查,改,删操作
查看>>
Linux标准错误和标准输出重定向到同一个文件
查看>>
HTTP Status 404 – Not Found
查看>>
【2021年新书推荐】ASP.NET Core 5 and Angular
查看>>
python-day3 for语句完整使用
查看>>
spring 程序开发步骤
查看>>
java.lang.OutOfMemoryError: Java heap space 的处理办法
查看>>
java基础知识:构造函数
查看>>
java基础知识:封装
查看>>
linux下安装tomcat服务器
查看>>
mysql 中的数据实现递归查询
查看>>
linux下远程上传命令scp
查看>>
(四)块设备文件
查看>>
可重入和不可重入函数
查看>>
(2.1)关系模型之关系结构和约束
查看>>
DBA 技能图谱1.0
查看>>
深入学习C++
查看>>
【HTTP】HTTP状态码图解
查看>>
《图解TCP/IP》学习——第六章TCP与UDP
查看>>