06. 稀疏数组(压缩数据源)

一,稀疏数组

1.定义

稀疏数组可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组

形如:

其稀疏数组形式:

2.存储

刚说到稀疏数组是一种压缩后的数组,为什么要进行压缩存储呢?

  • 原数组中存在大量的无效数据,占据了大量的存储空间,真正有用的数据却少之又少

  • 压缩存储可以节省存储空间以避免资源的不必要的浪费,在数据序列化到磁盘时,压缩存储可以提高IO效率

3.存储方式

1.普通存储

第一行存储原始数据总行数,总列数,总的非0数据个数

接下来每一行都存储非0数所在行,所在列,和具体值

形如:

eg :

2.链式存储

以这个为例:

a.普通链式存储

# 一,稀疏数组

b.行式链式存储

在这里插入图片描述

c.十字链式存储

在这里插入图片描述

4.代码实现

3.将稀疏数组存到此磁盘中

我们可以使用java的IO流将稀疏数组存放到磁盘中,原数组和稀疏数组比较,肯定是稀疏数组体积更小,占用空间更小

4.从磁盘中读取稀疏数组

在这里有个缺陷就是我不能动态的知道稀疏数组一共有几行,所以我选择传参的方式,这样其实是不太友好的

恢复原数组

5.完整代码

posted @ 2021-12-14 17:13  ℳ丶ℱℯĩ....ღ  阅读(53)  评论(0)    收藏  举报