一,稀疏数组
1.定义
稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组
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 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 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 2
1 2 1
2 4 2
2.存储
刚说到稀疏数组是一种压缩后的数组,为什么要进行压缩存储呢?
原数组中存在大量的无效数据,占据了大量的存储空间,真正有用的数据却少之又少
压缩存储可以节省存储空间以避免资源的不必要的浪费,在数据序列化到磁盘时,压缩存储可以提高IO效率
3.存储方式
1.普通存储
第一行存储原始数据总行数,总列数,总的非0数据个数 接下来每一行都存储非0数所在行,所在列,和具体值
rows cols n
r1 c1 val1
r2 c2 val2
. . .
. . .
rn cn valn
eg :
11 11 2
1 2 1
2 4 2
2.链式存储
0 0 0 0
0 1 0 0
0 0 2 0
0 0 3 0
后续会继续更新