zoukankan      html  css  js  c++  java
  • 二维数组

    1.二维数组遍历

    (1).第一种遍历方式(for循环)

            //声明一个二维数组
            int chessArr[] [] =new int[11][11];
            chessArr[1][2]=1;
            chessArr[2][3]=2;
            chessArr[3][4]=3;
            //输出原始的二维数组,遍历二维数组第一种方法
            for (int i = 0; i < chessArr.length; i++) {
                for (int j = 0; j <chessArr[i].length ; j++) {
                    System.out.printf("%d	",chessArr[i][j]);
                }
                System.out.println();
            }
    

    (2).第一种遍历方式(forEach循环)  

    //声明一个二维数组
            int chessArr[] [] =new int[11][11];
            chessArr[1][2]=1;
            chessArr[2][3]=2;
            chessArr[3][4]=3;
            //输出原始的二维数组,遍历二维数组第二方法
            System.out.println("数组遍历的第二种方式");
            for(int [] row :chessArr){
                for  (int data:row){
                    System.out.printf("%d	",data);
                }
                System.out.println();
            }
    

    2.二维数组转成稀疏数组  

     (1).什么是稀疏数组 

      比如有一个4行4列的二维数组int[4][4]转换成稀疏数组,

      稀疏数组的第0行,4,4,4 分别代表的是二维数组有4行,4列,有4个不为0的值。

      稀疏数组的第1行,0,0,1 代表的是在二维数组的第0行第0列的值为1

      稀疏数组的第2行,1,1,2 代表的是在二维数组的第1行第1列的值为2

      以此类推........

      说明如下图:

        

     (2).实现思路

       首先遍历二维数组,得到有效数据的个数为sum(这里指的是二维数组中不为0的值),然后根据sum创建稀疏数组 int sparArr[sum+1][3],最后将二维数组中的值存放到二维数组中。

    public static void main(String[] args) {
            //声明一个二维数组
            int chessArr[] [] =new int[11][11];
            chessArr[1][2]=1;
            chessArr[2][3]=2;
            chessArr[3][4]=3;
            //先统计二维数组中不为0数据的个数
            int sum=0;
            for (int i = 0; i <chessArr.length ; i++) {
                for (int j = 0; j <chessArr[i].length ; j++) {
                    if (chessArr[i][j]!=0){
                        sum++;
                    }
                }
            }
            System.out.println("二维数组中不为0的个数:"+sum);
            //创建稀疏数组,把二维数组中的值存放到稀疏数组中
            int sparseArr[][] = new int[sum + 1][3];
            sparseArr[0][0]=11;
            sparseArr[0][1]=11;
            sparseArr[0][2]=sum;
            int count = 0; //count 用于记录是第几个非0数据
            for (int i = 0; i <chessArr.length ; i++) {
                for (int j = 0; j <chessArr[i].length ; j++) {
                    if (chessArr[i][j]!=0){
                        count++;
                        sparseArr[count][0]=i;
                        sparseArr[count][1]=j;
                        sparseArr[count][2]=chessArr[i][j];
                    }
                }
            }
            System.out.println("稀疏数组为!!!!!!!!!!");
            for (int i = 0; i <sparseArr.length ; i++) {
                for (int j = 0; j <sparseArr[i].length ; j++) {
                    System.out.printf("%d	",sparseArr[i][j]);;
                }
                System.out.println();
            }
            System.out.println("稀疏数组转换成二维数组");
            //先通过稀疏数组的第一行,声明一个二维数组
            int arr[] [] =new int [sparseArr[0][0]][sparseArr[0][1]];
            //再吧对应的值复制到二维数组指定的位置
           for(int i=1;i<sparseArr.length;i++){
                arr[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
            }
     
        } 

    3.稀疏数组转换成二维数组

     (1).实现思路

      首先读取稀疏数组的第一行,创建原始的二维数组,比如 int [4][4],然后再读取稀疏数组中后几行的数组,存放到二维数组中。  

    public static void main(String[] args) {
            //声明一个二维数组
            int chessArr[] [] =new int[11][11];
            chessArr[1][2]=1;
            chessArr[2][3]=2;
            chessArr[3][4]=3;
            //先通过稀疏数组的第一行,声明一个二维数组
            int arr[] [] =new int [sparseArr[0][0]][sparseArr[0][1]];
            //再把对应的值复制到二维数组指定的位置
           for(int i=1;i<sparseArr.length;i++){
                arr[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
            }
            System.out.println("重新得到的二维数组为@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
            for (int i = 0; i <arr.length ; i++) {
                for (int j = 0; j <arr[i].length ; j++) {
                    System.out.printf("%d	",arr[i][j]);;
                }
                System.out.println();
            }
    
        }  

    每天进步一丢丢

    完成。

          

  • 相关阅读:
    idea配置tomcat运行按钮置灰,下拉没有自定义的tomcat选项
    配置多版本jdk,自由切换jdk版本
    五年经验程序员告诉你,如何确定自己是否适合做程序员
    你的编程能力从什么时候开始突飞猛进?
    10 个提升效率的Linux小技巧
    8 种经常被忽视的 SQL 错误用法,你有没有踩过坑?
    十大优秀编程项目,让你的简历金光闪闪
    一文掌握 Lambda 表达式
    一文详解微服务架构(一)
    Java的参数传递是「按值传递」还是「按引用传递」?
  • 原文地址:https://www.cnblogs.com/xiaofuzi123456/p/12623796.html
Copyright © 2011-2022 走看看