代碼需求:
對等行等列的二維數組進行 行列 的互換
分析過程
- 主對角線是保持不變
- 行列互換即角標互換:[0][1] => [1][0]
- 循環次數:外層循環行,內層循環每一行的列
示意圖
代碼實現
public class ArrayReverse {
public static void main(String[] args) {
int arry[][] = new int[][] {{1,2,3},{4,5,6},{7,8,9}};
reverse(arry);
printArray(arry);
}
/**
* 二維數組轉置
* @param arry
*/
public static void reverse(int arry[][]) {
int count = 0;//用於統計總共循環次數
for(int i=0; i< arry.length-1; i++) {
//列循環從:i+1開始,提高循環效率
for(int j=i+1; j< arry[i].length; j++) {
int temp = arry[i][j];
arry[i][j] = arry[j][i];
arry[j][i] = temp;
count++;
}
}
System.out.println(count);
}
public static void printArray(int array[][]){
for(int i=0;i<array.length; i++) {
for(int j = 0; j< array[i].length; j++) {
System.out.print(array[i][j]+"、");
}
System.out.println();
}
}
}
總結
內層循環(列循環)循環的起始點 = 外層循環+1;比從j=0循環節省了循環次數,提高效率。
如有更好的算法,還望道友下發留言幫忙改進!