基本介绍
当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方法是:
1)记录数组一共有几行几列,有多少个不同的值
2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
稀疏数组案例
实现代码
public static void main(String[] args) {
int[][] item = new int[11][11];
//放入模拟数据
item[1][2] = 1;
item[2][3] = 2;
item[4][7] = 2;
int sum = 0;
System.out.println("========未稀疏数组前的数据========");
for (int[] ints1 : item) {
for (int i : ints1) {
if (i != 0) {
sum++;
}
System.out.print(i + "t");
}
System.out.println();
}
//创建稀疏数组
int[][] ints = new int[sum + 1][3];
//二维数组第一行的值记录数组的行列和总数据量
ints[0][0] = item.length;
ints[0][1] = item[0].length;
ints[0][2] = sum;
int count = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (item[i][j] != 0) {
count++;
ints[count][0] = i;
ints[count][1] = j;
ints[count][2] = item[i][j];
}
}
}
System.out.println("========还原数组========");
int[][] s = new int[ints[0][0]][ints[0][1]];
for (int i = 1; i < ints.length; i++) {
s[ints[i][0]][ints[i][1]]=ints[i][2];
}
//输出数组
for (int i = 0; i < ints[0][0]; i++) {
for (int j = 0; j < ints[0][1]; j++) {
System.out.print(s[i][j]+"t");
}
System.out.println();
}
}



