Java数据结构和算法-稀疏数组的实现

Sparse array
以棋盘为例:
思路:
将棋盘看成一个二维数组,可以用二维数组对其进行相应的存储,在这个棋盘中有黑棋和红棋,没有棋子的是空白,黑棋用1进行表示,红棋用2进行表示,空白就用0 进行表示。 如果单纯的将棋盘进行存储,有很多空白的空格,导致存储空间利用的不够充分。如下图:
Java数据结构和算法-稀疏数组的实现_第1张图片这是一个11*11的表格作为棋盘,空间中有效数字的各数是有限的,但是大多数是没有用到的,都是以0来表示的,这样空间中重复的数值很多,我们可以用数组将相同的数据记录下来,放在数组里面,减少空间的浪费,记录一共有几行几列。

上图中一共有两个有效数字,分别所在的位置按二维数组的编号分别是(1,2)和(2,3)其余的部分都是0
可以这样来创建数组
Java数据结构和算法-稀疏数组的实现_第2张图片上图中一共有11行11列,有效数字是2,第二行1在(1,2)棋盘上的位置,有效数据是1;第三行2是在(2,3)棋盘上的位置。有效数据是2如何得到这个二维数组呢

二维数组转稀疏数组思路:
1遍历原始的二维数组得到有效的数据的个数sum,
2根据sum就可以建立稀疏数组sparse int [sum+1][3]
3将二维数组的有效数据存入到二维数组中

稀疏数组转成原始数组的思路
1读取稀疏数组的第一行,根据第一行的数据还原原始的二维数组
2.后几行读取后再将其赋值给原始二维数组中相应的位置。

Java数据结构和算法-稀疏数组的实现_第3张图片
Java数据结构和算法-稀疏数组的实现_第4张图片
Java数据结构和算法-稀疏数组的实现_第5张图片
Java数据结构和算法-稀疏数组的实现_第6张图片
稀疏数组记录

你可能感兴趣的:(数据结构,数据结构)