image.png

稀疏数组的基本介绍

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

稀疏数组的处理方法

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

image.png
解析:

  • 第一行第一列记录一共有多少行
  • 第一行第二列记录一共有多少列
  • 第一行第三列记录一共有多少值

    稀疏数组的应用实例

  1. 使用稀疏数组,来保存类似前面的二维数组(棋盘,地图等等)
  2. 把稀疏数组存盘,并且可以重新恢复成原来的二维数组
  3. 整体思路分析

image.png

  1. 代码实现
    • 二维数组转稀疏数组思路:
      • 遍历原始的二位数组,得到有效数据个数sum
      • 根据sum就可以创建稀疏数组sparseArr int[sum+1][3]
      • 将二维数组的有效数据存入到稀疏数组
    • 稀疏数组转二维数组思路:
      • 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组,比如上面的charArr2[11][11]
      • 在读取稀疏数组后几行的数据,并赋值给原始的二维数组即可