稀疏数组
-
引入
-
题意:编写一个五子棋程序,有存盘退出和续上盘的功能。棋盘是11×11格局。
-
思路:使用二维数组记录棋盘,默认数组为0,1代表黑色棋子。2代表蓝色棋子。
-
思路问题:因为该二维数组的很多值是默认值0,因此记录了很多没有意义的数据,可以用稀疏数组进行压缩。
-
-
稀疏数组
-
介绍:当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
-
处理方法
- 记录数组一共有多少行,有多少个不同的值。
- 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。
-
举例说明
- 原来6×7变成了9×3的数组,存储量大大减少,表达一样。
-
应用实例
-
使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)
-
把稀疏数组存盘,并且可以重新恢复原来的二维数组。
-
整体思路图示分析
-
二维数组转稀疏数组的思路
-
遍历原始的二维数组,得到有效数据的个数sum
-
根据sum就可以创建稀疏数组
sparseArr int[num+1][3]
-
将二维数组的有效数据存入到稀疏数组
-
-
稀疏数组转二维数组的思路
-
先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如
chessArr2 =int[11][11]
-
在读取稀疏数组后几行的数据,并赋给原始的二维数组即可。
-
-
下面给出原代码
-
-