稀疏数组
代码实现:
package datastructres.sparsearray;
public class SparseArray {
public static void main(String[] args) {
int chessArr1[][] = new int[11][11];
chessArr1[1][2]=1;
chessArr1[2][3]=2;
chessArr1[4][5]=2;
System.out.println("原始的二维数组:");
for (int[] row : chessArr1) {
for (int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
int sum=0;
for (int i=0;i<11;i++){
for (int j=0;j<11;j++){
if (chessArr1[i][j]!=0){
sum++;
}
}
}
System.out.println("sum="+sum);
System.out.println("转换后的稀疏数组:");
int count=0;
int sparseArr1[][]=new int[sum+1][3];
sparseArr1[0][0]=11;
sparseArr1[0][1]=11;
sparseArr1[0][2]=sum;
for (int i=0;i<11;i++){
for (int j=0;j<11;j++){
if (chessArr1[i][j]!=0){
count++;
sparseArr1[count][0]=i;
sparseArr1[count][1]=j;
sparseArr1[count][2]=chessArr1[i][j];
}
}
}
for (int i=0;i<sparseArr1.length;i++){
System.out.printf("%d\t%d\t%d\t\n",sparseArr1[i][0],sparseArr1[i][1],sparseArr1[i][2]);
}
System.out.println("将稀疏数组恢复成简单数组:");
int chessArr2[][] =new int[sparseArr1[0][0]][sparseArr1[0][1]];
for (int i=1;i<sparseArr1.length;i++){
chessArr2[sparseArr1[i][0]][sparseArr1[i][1]]=sparseArr1[i][2];
}
System.out.println("恢复之后的简单数组:");
for (int[] row : chessArr2) {
for (int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}