Java 数组转置 方阵顺时针旋转90度
2014-10-24 08:55
519 查看
一维数组转置(首尾交换)
二维数组转置
方阵顺时针旋转90度
方法一:可以看出,将二维数组顺时针旋转90度,就是将其转置后的数组的列进行前后交换(即第一列变为最后一列,第二列变为倒数第二列)
方法二:通过观察,可以看出:
列号变为行号
(n-行号)变为列号(其中n为方阵维数减1)
若要将矩阵顺时针旋转180,两次调用旋转90度的函数就可以。
方法一、方法二不仅针对三维方阵,其他维数的方阵也适合。
方法一:
方法二:
public class array { public static void main(String args[]){ int data [] =new int [] {1,2,3,4,5,6}; exchange(data); print1(data); } //首尾交换 public static void exchange(int temp[]){ int head=0; int tail=temp.length-1; for(int i=0;i<temp.length/2;i++){ int k=temp[head]; temp[head]=temp[tail]; temp[tail]=k; head++; tail--; } } //输出 public static void print1(int temp[]){ for(int s=0;s<temp.length;s++){ System.out.println(temp[s]); } } }
二维数组转置
public class helloword { public static void main(String args[]){ int data [][] = new int [][] {{1,2,3},{4,5,6},{7,8,9}}; reverse(data); print1(data); } //将矩阵转置 public static void reverse(int temp [][] ){ for(int i=0;i<temp.length;i++){ for(int j=i;j<temp[i].length;j++){ int k=temp[i][j]; temp[i][j]=temp[j][i]; temp[j][i]=k; } } } //将矩阵输出 public static void print1(int temp[][]){ for(int i=0;i<temp.length;i++){ for(int j=0;j<temp[i].length;j++){ System.out.print(temp[i][j]+"\t"); } System.out.println(); } } }
方阵顺时针旋转90度
方法一:可以看出,将二维数组顺时针旋转90度,就是将其转置后的数组的列进行前后交换(即第一列变为最后一列,第二列变为倒数第二列)
方法二:通过观察,可以看出:
列号变为行号
(n-行号)变为列号(其中n为方阵维数减1)
若要将矩阵顺时针旋转180,两次调用旋转90度的函数就可以。
方法一、方法二不仅针对三维方阵,其他维数的方阵也适合。
方法一:
public class helloword { public static void main(String args[]){ int data [][] = new int [][] {{1,2,3},{4,5,6},{7,8,9}}; reverse(data); exchange(data); print1(data); } //将矩阵转置 public static void reverse(int temp [][] ){ for(int i=0;i<temp.length;i++){ for(int j=i;j<temp[i].length;j++){ int k=temp[i][j]; temp[i][j]=temp[j][i]; temp[j][i]=k; } } } //将转置后的矩阵的列交换(第一列跟最后一列交换,第二列跟倒数第二列交换) public static void exchange(int temp[][]){ int a=0; int b=temp.length-1; for(int i=0;i < (temp.length)/2;i++){ for(int j=0;j<temp.length;j++){ int k=temp[j][a]; temp[j][a]=temp[j][b]; temp[j][b]=k; } a++; b--; } } //将矩阵输出 public static void print1(int temp[][]){ for(int i=0;i<temp.length;i++){ for(int j=0;j<temp[i].length;j++){ System.out.print(temp[i][j]+"\t"); } System.out.println(); } } }
方法二:
public class arrayEx { public static void main(String args[]){ int data [][] =new int [][] {{1,2,3},{4,5,6},{7,8,9}}; rotate(data); print1(data); } //旋转90度 public static void rotate(int temp[][]){ int len=temp.length; int b [][]=new int [len][len]; for(int i=0;i<len;i++){ for(int j=0;j<len;j++){ b[j][len-1-i]=temp[i][j]; } } for(int i=0;i<len;i++) for(int j=0;j<len;j++) temp[i][j]=b[i][j]; } //输出 public static void print1(int temp[][]){ for(int i=0;i<temp.length;i++){ for(int j=0;j<temp[i].length;j++){ System.out.print(temp[i][j]+"\t"); } System.out.println(); } } }
相关文章推荐
- 方阵原地顺时针旋转90度
- 算法:数组顺时针、逆时针90度旋转
- Python之二维数组N*N顺时针旋转90度
- Rotate Image 数组顺时针旋转90度
- 要求: 生成一个4*4的2维数组并将其顺时针旋转90度
- JAVA代码—算法基础:将N*N的矩阵顺时针旋转90度输出元素
- 数组顺时针旋转90度后输出(行列相等用单向链表实现)
- Java实现矩阵顺时针旋转90度
- 【数组】将N*N的int类型矩阵顺时针旋转90度
- 旋转方阵java编写
- 图片正(逆)旋转90度java小程序
- java实现数组的转置
- java之中的数组联系(一维转置)
- Arrays_Strings 90度顺时针逆时针旋转方形矩阵 @CareerCup
- 顺时针旋转图片90度(算法)
- 2015创发科技校园招聘笔试题——把矩阵顺时针旋转90度
- LeetCode——Rotate Image(二维数组顺时针旋转90度)
- java实现——008旋转数组的最小数字
- 把矩阵顺时针旋转90度
- 【重构】人人都来写算法 之 矩阵顺时针旋转90度,空间效率O(1),时间效率O(n*n)