您的位置:首页 > 其它

顺时针旋转矩阵九十度

2018-03-08 21:21 176 查看
/**
* 将一个矩阵(一定是正方形)顺时针旋转九十度
*/
public class C06_RotateMatrix {
public static void rotateMatrix(int[][]arr){
if(arr==null || arr.length==0 || arr[0].length==0){
return ;
}
int a = 0;//左上角,列
int b = 0;//左上角,行
int c = arr[0].length-1;//右下角,列
int d = arr.length-1;//右下角,行
while(a<=c  && b<=d){
rotateEdge(arr, a++, b++, c--, d--);
}
}
public static void rotateEdge(int[][]arr,int a,int b,int c,int d){
int times = c - a;
for (int i = 0; i < times; i++) {
int t = arr[b][a+i];
arr[b][a+i] = arr[d-i][a];
arr[d-i][a] = arr[d][c-i];
arr[d][c-i] = arr[b+i][c];
arr[b+i][c] = t;
}
}
public static void printMatrix(int[][]arr){
for(int i = 0;i<arr.length;i++){
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
int arr[][] = new int[][]{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16}
};
printMatrix(arr);
rotateMatrix(arr);
System.out.println("======");
printMatrix(arr);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: