稀疏数组
适用于大部分元素为0的二维数组,例如五子棋棋盘
第一行为原数组的行列以及不为零元素个数,后面每行为不为零元素的横纵坐标以及值
二维数组转化为稀疏数组
这里图方便随便定义了一个只有两个元素的二维数组
int chessArr1[][] = new int[11][11];
chessArr1[1][2] = 1;
chessArr1[2][3]= 1;
int chessArr2[][] = new int[3][3];
int t=0;
chessArr2[0][0]=11;
chessArr2[0][1]=11;
chessArr2[0][2]=t;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if(chessArr1[i][j]!=0){
t++;
chessArr2[t][0] = i+1;//增加可阅读性,统一数组index和行列数
chessArr2[t][1] = j+1;
chessArr2[t][2] = chessArr1[i][j];
}
System.out.print(chessArr1[i][j]+" ");
}
System.out.print("\n");
}
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(chessArr2[i][j]+" ");
}
System.out.print("\n");
}
运行结果如下