Java数据结构之稀疏数组(Sparse Array)

转载:https://www.cnblogs.com/MWCloud/p/11238798.html

1.需求

编写的五子棋程序中,有存盘退出和续上盘的功能。因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,为了压缩存储所以采用稀疏数组。

2.基本介绍

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

处理方法:

记录数组一共有几行几列,有多少个不同的值

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

3.应用实例

1)使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)

2)把稀疏数组存盘,并且可以从新恢复原来的二维数组数

4. 二维数组转稀疏数组的思路

1)遍历原始的二维数组,得到有效的数据个数sum

2)根据sum就可以创建稀疏数组sparseArr int[sum+1][3]

3)将二维数组的有效数据存入到稀疏数组。

5. 稀疏数组转原始的二维数组的思路

1)先读取稀疏数组的第一行,根据第一行的数据创建原始的二维数组,比如上面的chessArr2 = int[11][11]

2)在读取稀疏数组后几行的数据,并赋给原始的二维数组即可。

6.代码示例

 View Code

输出结果:

复制代码
原始的二维数组~~
0    0    0    0    0    0    0    0    0    0    0    
0    0    1    0    0    0    0    0    0    0    0    
0    0    0    2    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    2    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    

得到稀疏数组为~~~~
11    11    3    
1    2    1    
2    3    2    
4    5    2    


恢复后的二维数组
0    0    0    0    0    0    0    0    0    0    0    
0    0    1    0    0    0    0    0    0    0    0    
0    0    0    2    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    2    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0    
0    0    0    0    0    0    0    0    0    0    0
复制代码
posted @ 2020-07-24 16:00  leanring  阅读(108)  评论(0)    收藏  举报