稀疏数组
当使用二维数组储存数据的时候,可能会占用大量空间而实际存储的数据只占一小部分
那么就可以使用压缩技术,将二维数组变小,稀疏数组
例如:
可以创建一个[sum+1][3]的数组二维数组来存储,sum是有效元素个数
代码演示:
package tets;
import java.util.Arrays;
public class Main {
static int[][] n = new int[11][11];
public static void main(String[] args) {
//模拟数组
n[1][3] = 1;
n[2][4] = 2;
n[3][5] = 56;
n[4][6] = 21;
n[5][1] = 21;
n[6][6] = 66;
//压缩成稀疏数组
int sum = 0;
//找出有效个数
for (int i = 0; i < n.length; i++) {
for (int j = 0; j < n[i].length; j++) {
if (n[i][j] != 0) sum++;
}
}
//定义稀疏数组
int[][] array = new int[sum + 1][3];
array[0][0] = n.length;
array[0][1] = n[0].length;
array[0][2] = sum;
int k = 1;
for (int i = 0; i < n.length; i++) {
for (int j = 0; j < n[i].length; j++) {
if (n[i][j] != 0) {
array[k][0] = i;
array[k][1] = j;
array[k][2] = n[i][j];
k++;
}
}
}
//遍历
for (int i = 0; i < array.length; i++) {
System.out.println(Arrays.toString(array[i]));
}
//-------------------------------------------------------
//恢复成原数组
int[][] oldArray = new int[array[0][0]][array[0][1]];
for (int i = 1; i < array.length; i++) {
oldArray[array[i][0]][array[i][1]] = array[i][2];
}
//遍历
for (int i = 0; i < oldArray.length; i++) {
System.out.println(Arrays.toString(oldArray[i]));
}
}
}