0
点赞
收藏
分享

微信扫一扫

稀疏数组的理解与实现

源码之路 2022-02-05 阅读 69

稀疏数组

稀疏数组的概念

当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。其具有代表性的应用场景为五子棋的存盘,利用存盘可以重新恢复原来的数组。

稀疏数组的处理思想

记录稀疏数组中有几行几列,有几个不同的值

请添加图片描述

请添加图片描述

假设黑棋为1,白棋为2,未下子的地方为0,则将棋盘以数组的形式展现。

把具有不用值的元素记录在一个小规模的数组中,从而缩小程序规模

请添加图片描述

利用现有的表格新产生一个数组。我们获得的这个数组就是我们所需要的。

稀疏数组的实现

遍历数组,获取有效数据

  int num=0;
           //查找有效数据
         for (int i=0;i<arr.length;i++){
             for(int k=0;k<arr[i].length;k++){
                 if(arr[i][k]!=0){
                     num++;
                 }
             }
         }

根据有效数据创建稀疏数组

 //建立稀疏数组
         int sum[][]=new int[num+1][3];
         int count=1;//凑用计数器的原理
         sum[0][0]=11;//原数组行数
         sum[0][1]=11;//原数组列数
           sum[0][2]=num;//共有多少个原数据

将有效数据存入稀疏数组



           for (int i=0;i<arr.length;i++){
               for(int k=0;k<arr[i].length;k++){
                   if(arr[i][k]!=0){
                      sum[count][0]=i;
                      sum[count][1]=k;
                      sum[count][2]=arr[i][k];
                      count++;//计数器计数增加
                   }
               }
           }
           // 输出稀疏数组
           for(int a[]:sum){
               for (int i:a){
                   System.out.print(i+" ");
               }
               System.out.println();
           }
        }

请添加图片描述

同样利用稀疏数组可以重新生成原数组。

自我感悟

这是我的第一篇关于数据结构方面的文章,也是我个人对于稀疏数组的一些理解,如果对大家有帮助自然是极好的,如果有不足的地方,也希望大家帮忙指点迷津。

举报

相关推荐

0 条评论