`
ouqi
  • 浏览: 41314 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

矩阵旋转

阅读更多

 

没什么高端算法..注意下标,思维清晰就可以了。

 

//矩阵顺时针旋转90度,如果是in-place,则矩阵只能为方阵
//如果可以利用其它存储空间,则矩阵可以是m*n的,转换之后为n*m的
//i'(转换后行) = j(原列); j'(转换后列)= m-1-i(原行);
//我们这里写就地逆置的
public class ClockWiseTransferMatrixInplace {
	public void transfer(int a[][]){
		if(a == null||a[0]== null) return ;
		if(a.length!= a[0].length) return ;
		int n = a.length;
		
		transfer(a,0,n-1,n);
	}
	
	public void transfer(int a[][],int start,int end,int n){
		if(start>=end) return;
		for(int i = start;i<=end-1;i++){
			int tempa = a[i][start];
			int ti = start;
			int tj = n-1-i;
			while(ti!=i||tj!=start){
				int tempb = a[ti][tj];
				a[ti][tj] = tempa;
				tempa = tempb;
				int k = ti;
				ti = tj;
				tj = n-1-k;
			}
			a[i][start] = tempa;//不要忘记了!
		}
	    transfer(a,start+1,end-1,n);
	}
	

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics