一个使用Java语言描述的矩阵旋转的例子
发布日期:2021-05-07 23:35:38 浏览次数:13 分类:原创文章

本文共 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) 

上一篇:一个用Java实现的双向队列,可以分别在头尾插入和删除节点
下一篇:Java 类的内部嵌套子类型定义 如何正确饮用

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年03月27日 01时48分54秒