矩阵的转置-----java实现

对着背影说爱祢 提交于 2019-11-28 13:42:00

矩阵的转置即二维数组的装置-------java实现

import java.util.Arrays;
public class example9 {
	public static void main(String[] args){
		
		example9 show1=new example9();   //创建实例对象
	int b[][]={{1,2,3},{4,5,6},{7,8,9}}; //定义原二维数组
	System.out.println("转置前------------------------------------");
	show1.showArrays3(b);
	System.out.println("转置后------------------------------------");
	System.out.println();
	show1.swap(b);                      //调用实例对象的方法将数组转置
	}
public void swap(int[][] a){            //定义转置方法,方法名为swap
	for(int i=0;i<a.length;i++){        
		for(int j=i;j<a[i].length;j++){  
		//这里将j的初始值定义为i;如果定义为1的话,会出现二重转置,即相当于原初始数组;
			if(i!=j){
				int temp=a[i][j];
				a[i][j]=a[j][i];
				a[j][i]=temp;
			}
		}
	}
	showArrays3(a);                    //将转置后的数组进行打印
}
public void showArrays3(int[][] a){   //定义打印数组的方法
	for(int i=0;i<a.length;i++){
		for(int j=0;j<a[i].length;j++){
			System.out.print(a[i][j]+" ");
		}
		System.out.println();
		
	}
}
	
}

运行结果图:
在这里插入图片描述
本转置算法需要注意的地方:开始的时候核心我是这样写的:

public void swap(int[][] a){            
	for(int i=0;i<a.length;i++){        
		for(int j=1;j<a[i].length;j++){     ***//与源代码的不同:j=1***
	
			if(i!=j){
				int temp=a[i][j];
				a[i][j]=a[j][i];
				a[j][i]=temp;
			}
		}
	}
	showArrays3(a);                    
}

j=1与j-i的区别:
1、当j=1时会出现这种情况,
外层循环i=0时,会转置:a[0][1]、a[0][2]
外层循环i=1时,会转置:a[1][0]、a[1][1]、a[1][2]
外层循环i=2时,会转置:a[2][0]、a[2][1]
那么发现i=0时,a[0][1]与a[1][0]转置一次,a[0][2]与a[2][0]转换一次
但是当i=1和i=2时a[1][0]又与a[0][1],a[2][0]和a[0][2]又转换回来了,相当于没有转置;同理a[1][2]与a[2][1]当i=1和2的时候分别也转换了两次,相当于没有转换!
2、当j=i时,会有:(i=0时)a[0][1]、a[0][2]/(i=1时)a[1][2]、当(i=2时),五,恰好转置三对。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!