稀疏数组

稀疏数组(SparseArray):

    首先可以先看个例子:

1、编写一个五子棋的程序,可以使用二维数组的方式来实现

2、问题分析:因为二维数组的很多值是默认为0,因此记录了很多没有意义的数据

3、解决方法:使用稀疏数组的方式,只记录有意义的数据

 

介绍:

    所谓稀疏数组就是数组中大部分的内容值都未被使用(或都为零),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了节省内存空间,并且不影响数组中原有的内容值,我们可以采用一种压缩的方式来表示稀疏数组的内容。

 

    假设有一个9*7的数组,其内容如下:

 

在此数组中,共有63个空间,但却只使用了5个元素,造成58个元素空间的浪费。以下我们就使用稀疏数组重新来定义这个数组:

 

 

其中在稀疏数组中第一部分所记录的是原数组的列数和行数以及元素使用的个数、第二部分所记录的是原数组中元素的位置和内容。


经过压缩之后,原来需要声明大小为63的数组,而使用压缩后,只需要声明大小为6*3的数组,仅需18个存储空间。

 

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

    1、首先遍历二维数组,得到有效数据的个数n

    2、根据有效数据的个数n创建稀疏数组SparseArray int[n+1][3]

    3、将二维数组的有效数据存入到稀疏数组中去

 

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

    1、先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的例子:arr = int[9][7]

    2、把稀疏数组的第二行起的数据赋值给原始的二维数组

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值