基于java写的稀疏数组
package Array;
//稀疏数组
public class SparseArray {
public static void main(String[] args) {
int chessArr1[][] =new int[11][11];
chessArr1[2][4] =21;
chessArr1[1][5]=24;
chessArr1[4][6]=45;
chessArr1[0][1]=123;
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<chessArr1.length;i++){//遍历数组打印有效的数字的个数
for (int y=0;y<chessArr1.length;y++){
if (chessArr1[i][y]!=0){
sum++;
}
}
}
System.out.println(sum);
int sparseArr[][] =new int[sum+1][3];//根据有效数组的个数创建稀疏数组
sparseArr[0][0]=chessArr1.length;
sparseArr[0][1]=chessArr1.length;
sparseArr[0][2]=sum;
int count=0;
for (int i =0;i<chessArr1.length;i++){//遍历数组添加有效数字到稀疏数组
for (int y=0;y<chessArr1.length;y++){
if (chessArr1[i][y]!=0){
count++;
sparseArr[count][0]=i;
sparseArr[count][1]=y;
sparseArr[count][2]=chessArr1[i][y];
}
}
}
for (int[] row : sparseArr ){//遍历稀疏数组打印出来
for (int data:row){
System.out.printf("%d\t",data);
}
System.out.println();
}
int chessArr2[][] =new int[ sparseArr[0][0]][sparseArr[0][1]];
for (int i=1;i<sparseArr.length;i++){//恢复稀疏数组到原来的数组
if (sparseArr[i][2]!=0){
chessArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];
}
}
for (int[] row : chessArr2 ){//打印数组看看是否正确
for (int data:row){
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}