在含有较多0的二维数组中,使用稀疏数组来来记录不为0的特殊值,可以压缩存储空间。
以棋盘为例,黑棋为2,灰棋为1,其余交点为0。
右边为对应的稀疏数组表示。
public class XiShuArray {
public static void main(String[] args) {
//创建一个二维数组
int[][] array1 = new int[10][10];
array1[2][3] = 1;
array1[1][2] = 2;
//输出二维数组
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
System.out.print(array1[i][j] + "t");
}
System.out.println();
}
// 总行数 总列数 所有的特殊值
// [0] 10 10 2
// 第几行 第几列 特殊值
// [1] 1 2 2
// [2] 2 3 1
//获取特殊值的总个数
int sum = 0;
for (int i = 0; i < array1.length; i++) {
for (int j = 0; j < array1[i].length; j++) {
if (array1[i][j] != 0) {
sum++;
}
}
}
System.out.println("二维数组array1中有" + sum + "个特殊值");
//创建稀疏数组:
int[][] array2 = new int[sum + 1][3];
//获取第一行信息
array2[0][0]= array1.length;
array2[0][1]= array1[0].length;
array2[0][2]=sum;
//获取每个特殊值的信息
int count = 1;
for (int i = 0; i < array1.length; i++) {
for (int j=0;j



