稀疏数组

2021-04-02 03:24

阅读:807

标签:throws   其他   param   效果   red   取数据   二维   reader   赋值   

稀疏数组:

 当一个数组(包括多维数组)中大部分元素为0,或者为同一个值的数组时,,为了节约空间起到压缩的效果,将数据用另一种结构来表示,即稀疏数组。

稀疏数组的处理方法是:

 记录数组一共有几行几列,有多少个不同的值
 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模

如二维数组如下
共4行5列,其中大部分值为0,3个非0数值

{
  0   0   6   0   0
  5   0   0   9   0
  0   0   0   0   0
  0   0   0   0   0
}

转为稀疏数组如下
其中第一行[0][0],[0][1],[0][2]表示原始数组的行数、列数、非0的个数
后面的3行中的每一行表示一个非0数值所在的行列及值的大小,如(0,3,6)表示原始数组的第0行第3列的值为6

{
  4   5   3
  0   3   6
  1   0   5
  1   3   9
}

代码示例:

public class SparseArray {

    public static void main(String[] args) throws IOException {
        //1、创建一个二维数组
        int[][] chessArr1 = new int[11][11];
        chessArr1[1][2] = 1 ;
        chessArr1[2][3] = 2 ;
        System.out.println("原始二维数组:");
        //记录非0的个数
        int sum = 0;
        for (int[] rows : chessArr1){
            for (int data : rows){
                System.out.printf("%2d ",data);
                if (data!=0)
                    sum++;
            }
            System.out.println();
        }

        //2、将二维数组转为稀疏数组
        //为稀疏数组赋值
        //赋值第0行
        int[][] sparseArr = new int[sum+1][3];
        sparseArr[0][0] = chessArr1.length;
        sparseArr[0][1] = chessArr1[0].length;
        sparseArr[0][2] = sum;
        //赋值其他行
        int count = 0;
        for (int i=0; i

打印结果:

原始二维数组:
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  1  0  0  0  0  0  0  0  0 
 0  0  0  2  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
转换为的稀疏数组为:
11 11  2 
 1  2  1 
 2  3  2 
转换后的二维数组为:
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  1  0  0  0  0  0  0  0  0 
 0  0  0  2  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 
 0  0  0  0  0  0  0  0  0  0  0 

稀疏数组

标签:throws   其他   param   效果   red   取数据   二维   reader   赋值   

原文地址:https://www.cnblogs.com/zjw-blog/p/13508338.html


评论


亲,登录后才可以留言!