博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA算法:矩阵旋转(JAVA代码)
阅读量:4040 次
发布时间:2019-05-24

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

JAVA算法:矩阵旋转(JAVA代码)

给定一个N*N的二维矩阵,顺时针旋转90度后,输出该矩阵。

例如:

给定矩阵:

1    2    3    4    

5    6    7    8    
9    10    11    12    
13    14    15    16

顺时针旋转90度后,输出结果:

13    9    5    1    

14    10    6    2    
15    11    7    3    
16    12    8    4


算法设计

package com.bean.algorithmexec;public class RotateMatrix {		/*	 * 给定一个N*N的整形矩阵Matrix,把这个矩阵顺时针旋转90度,输入(打印)元素值。	 * 例如:	 *  1  2  3  4	 *  5  6  7  8	 *  9 10 11 12	 * 13 14 15 16	 * 输出结果为:	 * 	13 9  5 1	 *  14 10 6 2	 *  15 11 7 3	 *  16 12 8 4	 * 	 * 要求:额外空间复杂度为O(1)	 * */	public static void main(String[] args) {		// TODO Auto-generated method stub		//初始化一个 4*4的整形矩阵,从第一行第一列从左向右,第二行,第三行,直到第四行依次赋值 1,2,...16.				int[][] matrixDemo=new int[4][4];				matrixDemo=createMatrix();				printMatrix(matrixDemo);								System.out.println();				//顺时针旋转90度打印				rotate(matrixDemo);				printMatrix(matrixDemo);	}	//顺时针旋转90度打印	private static void rotate(int[][] matrix) {		// TODO Auto-generated method stub		int tR=0;		int tC=0;		int dR=matrix.length-1;		int dC=matrix[0].length-1;		while(tR<=dR) {			rotateEdge(matrix, tR++, tC++, dR--,dC--);		}	}		//顺时针旋转90度打印	private static void rotateEdge(int[][] matrix, int tR, int tC, int dR, int dC) {		// TODO Auto-generated method stub		int times=dC-tC;  // timies就是总的组数		int temp=0;		for(int i=0; i!=times;i++) {			//一次循环就是一组调整			temp=matrix[tR][tC+i];			matrix[tR][tC+i]=matrix[dR-i][tC];			matrix[dR-i][tC]=matrix[dR][dC-i];			matrix[dR][dC-i]=matrix[tR+i][dC];			matrix[tR+i][dC]=temp;					}					}	//生成矩阵	private static int[][] createMatrix() {		// TODO Auto-generated method stub		int matrix[][]=new int[4][4];		int k=1;		for(int i=0;i<4;i++) {			for(int j=0;j<4;j++) {				matrix[i][j]=k;				k++;			}		}				return matrix;	}		//顺序打印矩阵元素	private static void printMatrix(int[][] matrix) {		for(int i=0;i<4;i++) {			for(int j=0;j<4;j++) {				System.out.print(matrix[i][j]+"\t");			}			System.out.println();		}			}	}

 

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

你可能感兴趣的文章
【leetcode】Clone Graph(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>
从头开始学习jsp(2)——jsp的基本语法
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
DIV/CSS:一个贴在左上角的标签
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
Vue组件
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>