zoukankan      html  css  js  c++  java
  • java 二维数组行列互换

    代码需求:

    对等行等列的二维数组进行 行列 的互换

    分析过程

    • 主对角线是保持不变
    • 行列互换即角标互换:[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循环节省了循环次数,提高效率。

    如有更好的算法,还望道友下发留言帮忙改进!

  • 相关阅读:
    对象的绑定方法
    属性查找
    定制对象独有特征
    类和对象
    面向对象编程介绍
    面向对象程序设计的由来(历史故事)
    基于socketserver实现并发的socket套接字编程
    基于UDP协议的socket套接字编程
    解决粘包问题
    copy 合并
  • 原文地址:https://www.cnblogs.com/hzyy/p/8663017.html
Copyright © 2011-2022 走看看