1 package my_basic.class_3; 2 3 /*正方形矩阵 顺时针旋转矩阵 90度*/ 4 public class Code_06_RotateMatrix { 5 6 public static void rotate(int[][] matrix) { 7 int tr = 0; 8 int tc = 0; 9 int dr = matrix.length-1; 10 int dc = matrix[0].length-1; 11 while(tr < dr) { 12 rotateEdge(matrix,tr++,tc++,dr--,dc--); /*从外圈 到里圈*/ 13 } 14 } 15 16 public static void rotateEdge(int[][] matrix, int tr, int tc, int dr, int dc) { 17 int times = dc - tc; 18 int tmp = 0; 19 for(int i=0; i!=times;i++) { 20 tmp = matrix[tr][tc+i]; 21 matrix[tr][tc + i] = matrix[dr-i][tc]; 22 matrix[dr-i][tc] = matrix[dr][dc-i]; 23 matrix[dr][dc-i] = matrix[tr+i][dc]; 24 matrix[tr+i][dc] = tmp; 25 } 26 } 27 public static void printMatrix(int[][] matrix) { 28 for (int i = 0; i < matrix.length; i++) { 29 for(int j = 0; j < matrix[0].length;j++) { 30 System.out.print(matrix[i][j] + " "); 31 } 32 System.out.println(); 33 } 34 } 35 36 public static void main(String[] args) { 37 int[][] matrix = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 }, 38 { 13, 14, 15, 16 } }; 39 printMatrix(matrix); 40 System.out.println("==============="); 41 rotate(matrix); 42 printMatrix(matrix); 43 } 44 }