栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

稀疏数组的使用(Java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

稀疏数组的使用(Java)

基础介绍:

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

如图所示:

稀疏数组的处理:
    记录数组一共有几列几行,有多少个不同的值.把具体有不同的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
实例:
    使用稀疏数组,来保留二维数组(棋盘,地图等)把稀疏数组存盘,并且可以从新恢复原来的二维数组数
二维数组转稀疏数组的思路:
    遍历原始的二维数组,得到有效数据的个数sum根据sum就可以创建稀疏数组sparseArr int[sum+1][3]将二维数组的有效数据存入到稀疏数组
稀疏数组转原始二维数组的思路:
    先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组再读取稀疏数组后几行的数据,并赋给原始的二维数组即可
例子:将如图的二维数组转化为稀疏数组,并且将稀疏数组转化为原数组

 我们利用上方的思路可以得到对应的稀疏数组为:

 代码如下:

public class xishushuzu {
    public static void main(String[] args) {
        //原数组
        int[][] arr=new int[11][11];
        arr[1][2]=1;
        arr[3][4]=3;
        arr[5][10]=21;
        arr[8][6]=23;
        //打印原数组
        System.out.println("原数组为:");
        int sum=0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (arr[i][j]!=0){
                    sum++;
                }
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println();
        //稀疏数组
        int[][] sparr=new int[sum+1][3];
        sparr[0][0]=11;
        sparr[0][1]=11;
        sparr[0][2]=sum;
        int cont=0;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                if (arr[i][j]!=0){
                    cont++;
                    sparr[cont][0]=i;
                    sparr[cont][1]=j;
                    sparr[cont][2]=arr[i][j];
                }
            }
        }
        System.out.println();
        //打印稀疏数组
        System.out.println("对应的稀疏数组为:");
        for (int i = 0; i < sum+1; i++) {
            for (int j = 0; j < 3; j++) {
                System.out.print(sparr[i][j]+" ");
            }
            System.out.println();
        }
        //稀疏数组转原数组
        int[][] chess=new int[sparr[0][0]][sparr[0][1]];
        for (int i = 1; i <= sparr[0][2]; i++) {
            chess[sparr[i][0]][sparr[i][1]]=sparr[i][2];
            }
        System.out.println();
        //打印原数组
        System.out.println("对应的原数组为:");
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 11; j++) {
                System.out.print(chess[i][j]+" ");
            }
            System.out.println();
        }
        System.out.println();
        }
    }

这是本人第一次发帖有什么错误请及时提出

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/758926.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号