数据结构与算法
稀疏数组SparseArray
1. 什么是稀疏数组
一个数组含有大量重复的值的时候,可以把它转化为稀疏数组来表示,这样会大量节省空间占用。
稀疏数组:
是个二维数组,只有3列,分别对应:行row、列col、值value
第一行表示原数组的行数、列数、有效值个数。(注意,0是第一行)
从第二行开始,每行都会对应一个有效值。
- 用row(第一列)表示有效值是在原数组中的第几行
- 用col(第二列)表示有效值是在原数组中的第几列
- 用value(第三列)表示有效值在原数组中的值
- 行数为原数组有效值个数+1
示例:
原数组
0,0,0,0,0
1,0,2,0,0
0,0,0,0,0
0,0,0,1,0
对应的稀疏数组:
4,5,3 //表示原数组有4行、5列、3个有效值
1,0,1 //表示一个有效值,位置在原数组的第2行、第1列、值为1
1,2,2 //同上,表示位置在原数组第2行、第3列、值为2
3,3,1 //表示位置在原数组第4行、第4列、值为1
2. 二维数组⇌稀疏数组
java代码演示,相互转换的过程。
1 | package SparseArray; |
输出结果:
##############这是原数组1
0 0 0 0 0
1 0 2 0 0
0 0 0 0 0
0 0 0 1 0##############
原数组1有:3个有效值##############这是转换后的稀疏数组
4 5 3
1 0 1
1 2 2
3 3 1##############这是恢复后的原数组2
0 0 0 0 0
1 0 2 0 0
0 0 0 0 0
0 0 0 1 0
3. 稀疏数组⇌数据文件
1 | //13. 将稀疏数组存入本地文件 |