假如有一个4X4的二维数组
可以看到,这个数组大部分元素都是0,因此是一个稀疏数组,假如每一个元素都要存储,需要存储16个元素,大大浪费内存,因此我们在存储时只需要存储数组的必要信息跟非零元素,将原始数组转换为
进行存储,第一行表示原数组的规模跟非零元素的个数,第二行表示原数组第一个非零元素所在的行和列和非零元素的值,以此类推,转换后的数组元素个数为9,因此大大节省了存储空间
由以上分析,我们知道,一个稀疏数组进行压缩存储,压缩后数组的规模为:(sum+1)*3,其中sum表示稀疏数组中非零元素的个数,接下来,用java代码实现此转换
//定义稀疏数组,sparseArray[sum+1][3],sum为原数组非零元素个数
//1.遍历原始数组,确定非零元素个数
int sum = 0;
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
if (array[i][j] != 0) {
sum++;
}
}
}
//2.定义稀疏数组
int sparseArray[][