-
稀疏数组是用来对普通数组进行压缩存储的一种数组,其适用于普通数组元素0比较多的情况
-
稀疏数组存储方式:
- 第一行为被存储数组的大小(行数和列数)和不为0的元素个数
- 从第二起,每行为被存储数组不为0的元素的坐标(第几行和第几列)和值
-
例子:
-
Java代码:
public class Demo {
public static void main(String[] args) {
//初始化数组
int[][] arrays = {{0,0,0,1,0,0,0,0,0},
{0,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,3,0},
{0,0,4,0,0,0,0,0,0}};
//获取数组不为0元素个数
int count = 0;
for(int[] array : arrays) {
for(int arrNum : array) {
if(arrNum != 0) {
count++;
}
}
}
//初始化稀疏数组
int[][] sparseArray = new int[count+1][3];
//稀疏数组赋值
sparseArray[0][0] = arrays.length;
sparseArray[0][1] = arrays[0].length;
sparseArray[0][2] = count;
int cnt = 1;
for(int i=0;i<arrays.length;i++) {
for(int j=0;j<arrays[i].length;j++){
if(arrays[i][j] != 0) {
sparseArray[cnt][0] = i;
sparseArray[cnt][1] = j;
sparseArray[cnt++][2] = arrays[i][j];
}
}
}
//打印稀疏数组
for(int[] sparseArr : sparseArray) {
for(int sparseArrNum : sparseArr) {
System.out.print(sparseArrNum+" ");
}
System.out.println();
}
System.out.println("结束");
/*
结果:
6 9 4
0 3 1
2 4 2
4 7 3
5 2 4
结束
*/
}
}