问题
对一个方阵转置,就是将原来的行号变称列号,列号变成行号
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
转置后
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
即一个正方形矩阵 左上到右下的对角线上的行列一致 转置后依旧一致,其他元素对角互换位置
解题
/**
* 对一个方阵转置,就是将原来的行号变称列号,列号变成行号
* 1 2 3 4
* 5 6 7 8
* 9 10 11 12
* 13 14 15 16
*
* 转置后
* 1 5 9 13
* 2 6 10 14
* 3 7 11 15
* 4 8 12 16
*
* 即一个正方形矩阵 左上到右下的对角线上的行列一致 转置后依旧一致,其他元素对角互换位置
*/
public static void matrixTurn(int[][] matrix){
// 二维数组的行数 方阵的行数
int length = matrix.length;
// 每一行都需要遍历
for (int i = 0; i < length; i++){
// 每个对角的元素只需要转换一次 即如果为 4 个元素,则第一行从索引0开始做转换(即第一个元素),
// 第二行则从索引1 开始转换(即第二个元素),第三行则从索引2开始转换(即第三个元素)
for (int j = i; j < matrix[i].length; j++){
int ele = matrix[i][j];
matrix[i][j] = matrix[j][i];
matrix[j][i] = ele;
}
}
for (int i = 0; i < length; i++){
for (int j = 0; j < matrix[i].length; j++){
System.out.print(matrix[i][j] + " ");
}
System.out.println();
}
}