矩阵的转置即二维数组的装置-------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时),五,恰好转置三对。
来源:CSDN
作者:运行中.....
链接:https://blog.csdn.net/DXflighting/article/details/82913857