稀疏数组

稀疏数组

对二维数组为0的数据忽略,有值的组成一个新二维数组,实现压缩;新二维数组特点为点0行为旧二维数组的行数、列数、有值个数,即为三列;以后每一行为一个有值数据的行号,列号,值,即新二维数组有[有值个数+1列:从0开始]+[3列]

public static void main(String[] args) {
        int sum = 0;//有效值数
        int row = 0;//行
        int column = 0;//列
        int count = 0;//有效值数递增
        //俩层循环打印成表,建一个原表
        int[][] array1 = new int[5][5];
        array1[3][2] = 1;
        array1[4][3] = 2;
        //打印成表
        System.out.println("表1————————————————————————");
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1.length; j++) {
                System.out.print(array1[i][j] + "\t");
            }
            System.out.println();//换行
        }
//遍历数组得到行和列,有效值个数
        for (int i = 0; i < array1.length; i++) {
            row = i;
            for (int j = 0; j < array1.length; j++) {
                column = j;
                if (array1[i][j] != 0) {
                    sum++;
                }
            }
        }
        //创建稀疏数组,并给第一行赋值
        int[][] array2 = new int[sum + 1][3];
        array2[0][0] = row + 1;
        array2[0][1] = column + 1;
        array2[0][2] = sum;
        for (int i = 0; i < array1.length; i++) {
            for (int j = 0; j < array1.length; j++) {
                if (array1[i][j] != 0) {
                    array2[count + 1][0] = i;
                    array2[count + 1][1] = j;
                    array2[count + 1][2] = array1[i][j];
                    count++;//有效值递增最后加1
                }
            }
        }
        System.out.println(count);
        System.out.println();
        System.out.println("表2——————————————————");
        for (int i = 0; i < array2.length; i++) {
            for (int j = 0; j < array2.length; j++) {
                System.out.print(array2[i][j] + "\t");
            }
            System.out.println();
        }
    }

posted on 2021-02-26 19:34  码路行  阅读(56)  评论(0)    收藏  举报

导航