稀疏数组详解

吃猫的鱼
2023-02-28 / 0 评论 / 336 阅读 / 正在检测是否收录...

稀疏数组

基本介绍

当一个数组中大部分元素为0,或者同一个值的数组时,可以使用系数数组来保存该数组。

稀疏数组的处理方法是:

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

稀疏数组转换

二维数组转稀疏数组的思路:

  1. 遍历 原始的二维数组,得到有效数据的个数sum
  2. 根据sum就可以创建 系数数组sparseArr intsum+1
  3. 将二维数组的有效数据存入到稀疏数组

稀疏数组转原始的二维数组的思路

  1. 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组。、
  2. 在读取稀疏数组后几行的数据,并赋给原始的二维数组即可。

代码示例

/**
 *当前类用于将普通的二维数组转换为稀疏数组进行存储
 */
public class SparseArray {


    public static void main(String[] args){
        int a[][] = new int[6][6];
        a[2][2] = 1;
        a[3][4] = 2;
        a[3][3] = 2;
        a[3][5] = 2;
        a[5][5] = 10;
        //首先判断当前数组的大小
        int row = 6;
        int col = 6;
        //遍历找出有多少个有效数字
        int count = 0;
        for(int i=0;i<row;i++){
            for (int j=0;j<col;j++){
                if(a[i][j]!=0){
                    count++;
                }
            }
        }
        //给稀疏数组第一行加入原始数据
        int array[][] = new int[row][3];
        array[0][0] = row;
        array[0][1] = col;
        array[0][2] = count;
        //将有效的数字存入稀疏数组中
        int num = 1;
        for(int i=0;i<row;i++){
            for (int j=0;j<col;j++){
                if(a[i][j]!=0){
                    array[num][0]=i;
                    array[num][1]=j;
                    array[num][2]=a[i][j];
                    num++;
                }
            }
        }
        //开始输出稀疏数组
        for(int i=0;i<count+1;i++){
            for (int j=0;j<3;j++){
                System.out.print(array[i][j]+" ");
            }
            System.out.println();
        }
    }
}

3

评论 (0)

取消
友情链接 文章阅读: 网站地图