java旋转90°矩阵
{1 ,2 ,3 , 4 },
{5 ,6 ,7 , 8 },
{9 ,10,11,12},
{13,14,15,16}
代码片
.
public class main {
public static void main(String args [])
{
int [][]m= {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int tr=0;
int tc=0;
int dr=m.length-1;
int dc=m[0].length-1;
show("旋转90°前", m);
while(tr<=dr&&tc<=dc)
{
rote(m, tr++, tc++, dr--,dc-- );
}
show("旋转90°后", m);
}
/**int tr 左上 行,
* int tc 左上 列,
* int dr 右下 行,
* int dc 右下 列
* */
public static void rote(int [][]m,int tr,int tc,int dr,int dc )
{
int times=dc-tc;
int temp=0;
for(int i=0;i!=times;i++) {
temp=m[tr][tc+i];
m[tr][tc+i]=m[dr-i][tc];
m[dr-i][tc]=m[dr][dc-i];
m[dr][dc-i]=m[tr+i][dc];
m[tr+i][dc]=temp;
}
}
public static void show(String s,int m[][]){
System.out.println(s);
for(int i=0;i<m.length;i++) {
for(int j=0;j<m[0].length;j++) {
System.out.print(m[i][j]+" ");
}
System.out.println();
}
System.out.println();
}
}
输出
.
旋转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