スパース配列と2次元配列間の変換

スパース配列を2次元配列に変換

2次元配列2次元配列

対応するスパース配列を変換します

上記の2次元配列に対応

変換ルール

1.スパース配列の最初の行に対応する数は、行数(11)、列数(11)、および2次元配列の値の総数(5)です。

2.スパース配列の2行目が始まり、各行は2次元配列の値を表します。たとえば、2行目の1 1 1は、
添え字がchessarray [1 [1]である2次元配列を表します。値は1です。つまり、 chessarray [1 [1] = 1;などのように、各行は2次元配列内の値の場所です。
##コード

int chessArray[][] = new int[11][11];
    //赋值
    {
        chessArray[1][1]=1;
        chessArray[2][3]=2;
        chessArray[3][3]=3;
        chessArray[4][4]=4;
        chessArray[6][6]=5;
    }
    //遍历计数总值
     int dataNum = 0;
        System.out.println("------------chessArray--------------");
        for(int rows=0;rows < chessArray.length ; rows ++){
            for (int col = 0 ;col < chessArray[rows].length; col++){
                System.out.print(chessArray[rows][col]+" ");
                if(chessArray[rows][col] != 0)
                    dataNum++;
            }
            System.out.println();
        }
        //开始转换成稀疏数组
        int parseArray[][] = new int[dataNum+1][3];//定义稀疏数组
        int sparseRow = 0;//稀疏数组第一行赋值
        parseArray[sparseRow][0] =chessArray.length;
        parseArray[sparseRow][1] = chessArray[0].length;
        parseArray[sparseRow][2] = dataNum;
        //二维数组中的值存储到稀疏数组
        for(int rows=0;rows < chessArray.length ; rows ++){
            for (int col = 0 ;col < chessArray[rows].length; col++){
                if(chessArray[rows][col] != 0){
                    sparseRow++;
                    parseArray[sparseRow][0]=rows;
                    parseArray[sparseRow][1]=col;
                    parseArray[sparseRow][2]=chessArray[rows][col];
                }
            }
        }
        //打印稀疏数组
        System.out.println("------------parseArray--------------");
        for (int[] row : parseArray){
            for(int data: row){
                System.out.print(data+" ");
            }
            System.out.println();
        }

ここに2次元配列を挿入して、コードの一部をスパース配列に変換します

上記のコードに従って反転を達成し、疎配列を2次元配列に変換します。

//定义一个稀疏数组
 int[][] sparseArray = new int[6][3];
        //初始化二维数组
        sparseArray[0][0]= 11 ;
        sparseArray[0][1]= 11 ;
        sparseArray[0][2]= 5 ;
        //赋值开始 二位数组的一个值 对应稀疏数组的一行
        sparseArray[1][0]= 1 ;
        sparseArray[1][1]= 1 ;
        sparseArray[1][2]= 1 ;
        //赋值开始 二位数组的一个值
        sparseArray[2][0]= 2 ;
        sparseArray[2][1]= 3 ;
        sparseArray[2][2]= 2 ;
        //赋值开始 二位数组的一个值
        sparseArray[3][0]= 3 ;
        sparseArray[3][1]= 3 ;
        sparseArray[3][2]= 3 ;
        //赋值开始 二位数组的一个值
        sparseArray[4][0]= 4 ;
        sparseArray[4][1]= 4 ;
        sparseArray[4][2]= 4 ;
        //赋值开始 二位数组的一个值
        sparseArray[5][0]= 6 ;
        sparseArray[5][1]= 6 ;
        sparseArray[5][2]= 6 ;

        //初始化二维数组
        int[][] chessArray = new int[sparseArray[0][0]][sparseArray[0][1]];
        System.out.println("------------sparseArray--------------");
        for(int i = 0;i < sparseArray.length; i++){
            if(i!=0){//稀疏数组与二维数组的转换
                int row = sparseArray[i][0] ;
                int col = sparseArray[i][1];
                int data = sparseArray[i][2];
                chessArray[row][col] = data;
            }
            for (int j =0 ;j < sparseArray[i].length ; j++){
                System.out.printf("%d\t",sparseArray[i][j]);
            }
            System.out.println();

        }
        //把二维数组打印出来
        System.out.println("------------chessArray--------------");
        for(int rows=0;rows < chessArray.length ; rows ++){
            for (int col = 0 ;col < chessArray[rows].length; col++){
                System.out.printf("%d\t",chessArray[rows][col]);
            }
            System.out.println();
        }


おすすめ

転載: blog.csdn.net/weixin_40128696/article/details/107707894