码迷,mamicode.com
首页 > 编程语言 > 详细

二维数组

时间:2020-04-03 00:47:06      阅读:58      评论:0      收藏:0      [点我收藏+]

标签:一个   pre   遍历   size   数据   print   mic   printf   inf   

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\t",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\t",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\t",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\t",arr[i][j]);;
            }
            System.out.println();
        }

    }  

 

完成。

      

 

二维数组

标签:一个   pre   遍历   size   数据   print   mic   printf   inf   

原文地址:https://www.cnblogs.com/xiaofuzi123456/p/12623796.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!