编程语言
首页 > 编程语言> > Day9 Java学习第九天--->数组练习

Day9 Java学习第九天--->数组练习

作者:互联网

 

数组练习--->二维数组转换为稀疏数组

 

public class SparseArrayDemo1 {
    public static void main(String[] args) {

        /**
         * 1.输出原始二维数组
         */
        int[][] chessArray = new int[11][11];
        chessArray[1][2] = 1;
        chessArray[2][3] = 2;

        System.out.println("原始二维数组:");
        for(int i=0;i<chessArray.length;i++){
            //将其想成为一维数组
            for(int j = 0;j<chessArray[i].length;j++){
                System.out.print(chessArray[i][j]+"\t");
            }
            System.out.println();
        }
        /**
         * 2.将二维数组转换为稀疏数组
         * 用来统计原始数组里有几个有意义的数
         * sum用来遍历原始数组 统计有效数字个数
         */
        int sum = 0;//用于存储有效数值的个数
        for(int i=0;i<11;i++){
            for(int j = 0;j<11;j++){
                if(chessArray[i][j]!=0){
                    sum++;
                }
            }
        }

        /**
         * 3.创建稀疏数组,并将总数赋值给稀疏数组第一行
         * sum 相当于稀疏数组的行
         */
        int[][] sparseArray = new int[sum+1][3];
        //稀疏数组第一行,将总行,总列,有效数值赋值给第一行
        sparseArray[0][0] = 11;
        sparseArray[0][1] = 11;
        sparseArray[0][2] = sum;

        /**
         * 4.将非0的数值存入到稀疏数组里
         * count 相当于
         */
        int count = 0;
        for(int i=0;i<chessArray.length;i++){
            for(int j=0;j<chessArray[i].length;j++){
                if(chessArray[i][j]!=0){
                    count++;
                    sparseArray[count][0] = i;
                    sparseArray[count][1] = j;
                    sparseArray[count][2] = chessArray[i][j];
                }
            }
        }

        //输出稀疏矩阵
        System.out.println();
        System.out.println("稀疏数组:");
        for (int i = 0; i < sparseArray.length; i++) {
            System.out.println(sparseArray[i][0]+"\t"
            +sparseArray[i][1]+"\t"
            +sparseArray[i][2]+"\t");
        }

        /**
         *   将稀疏数组恢复成二维数组
         * 1.根据稀疏数组第一行,创建二维数组
         * 2.读取稀疏数组后几行,赋值给二维数组
         * 这里是从第二行开始的
         */


        int[][]chessArray2 = new int[sparseArray[0][0]][sparseArray[0][1]];
        for(int i = 1;i<sparseArray.length;i++){
            chessArray2[sparseArray[i][0]][sparseArray[i][1]] = sparseArray[i][2];
        }
        System.out.println("恢复后的二维数组:");
        for(int[] row:chessArray2){
            for(int data:row){
                System.out.print(data+"\t");
            }
            System.out.println();
        }

    }
}

 

标签:第九天,Java,chessArray,int,---,二维,数组,public
来源: https://www.cnblogs.com/hyz051202020/p/14808337.html