稀疏数组(java代码实现)

1.3.1  稀疏数组

概念:当一个数组中大部分元素为0,或者为同一值时,可以使用稀疏数组来保存数组。稀疏数组剔除了数组中没有意义的数(0或者大部分相同的元素)只保存特殊的有意义的数值,以缩小保存数组的规模,节省空间资源的占用。

稀疏数组只有三列 :第一列记录值在原二维数组中的行数,第二列记录值在原二维数组中的列数,第三列为值的大小。

稀疏数组的处理方法:

1)记录数组的规模,即几行几列,有几个不同的值(写在稀疏数组的第一行)。

2)仅将具有不同值的元素的行列位置纪录在一个小规模数组中,从而缩小程序的规模。

原二维数组

所对应的稀疏数组

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

1)遍历原二维数组,得到不同的值的个数n个。

2)创建稀疏数组   spareseArr  int [n+1] [3]     (因为除了存放不同的值外,在稀疏数组第一行还要存放原数组的行数和列数及不同的值的个数,所以是n+1行)

3)将原二维数组的不同的值存入稀疏数组。

代码实现

1.创建原二维数组并设置两个不同的特殊值

原二维数组结果如下:(仅在第二行第三列和第三行第四列有值)

 2.将此二维数组转化为稀疏数组:

 稀疏数组结果如下:

 由此可见,稀疏数组相比原二维数组可大大节省空间资源的占用

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值