X1-1、java数据结构---sparsearray(稀疏数组)

总目录:地址如下看总纲

https://www.jianshu.com/p/929ca9e209e8

1、何为稀疏数组

稀疏数组,首先把稀疏拆出来,理解为写程序的你,头发日渐稀疏,渐少。
比如一个棋盘,可以用二位数组表示,这个棋牌(只有三种数据,0为没有棋子,1为黑棋,2为白棋)

2、应用场景

比如 一些量大,且多数为重复值的时候,可以使用(棋牌,地图等等)

3、图和说明:

1、记录数组有几行几列,有多少了不同的值
2、把具体不同值的元素中的列和行和值(棋子的颜色)记录在一个小规模的数组中,从而缩小程序的规模
3、需要主要的是列是固定(行,列,值),行不固定(取决于有棋子才获取行数据)


image.png

4、二位数组转稀疏数组

(1)思路:

1、首先注意的是,行和列这里设计都从零开始(因为遍历我打算从0开始)
2、遍历原始二位数组,获取到有效值个数 sum(有效值:就是除了初始化0值以外的)
3、再根据 sum 创建出 稀疏数组 长度 sparsearray[sum+1][3](可以理解就理解,不行就当公式记下来)
4、将要二位数组的有效数据存放到稀疏数组中(有效数据:行,列,值【1,2】)

(2)代码:


image.png

image.png

5、稀疏数组转二位数组

(1)思路:

1、先根据稀疏数组的第一行,创建出 原始数组的长度 11*11
2、在读取稀疏数组的后面行数(第二行开始),将稀疏有效值(V)赋值给原始数组的行列

(2)代码:


image.png

image.png

6、稀疏数组序列化和反序列化

image.png

image.png

image.png

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。