文章目录
了解什么是稀疏数组
class SparseArray
public class SparseArray {
public static void main(String[] args) {
/**
* 1.模拟出棋盘数据使用二维数组(五子棋)
*/
int[][] array=new int[11][11];
array[1][2]=1;
array[2][4]=2;
//打印棋盘来查看效果
// for(int i=0;i<11;i++){
// for(int j=0;j<11;j++){
// System.out.print(array[i][j]+" ");
// }
// System.out.println();
// }
for (int[] row:array){
for (int val:row){
System.out.print(val+"\t");
}
System.out.println();
}
/**
* 需要把如上的二维数组中的有效数据压缩至稀疏数组中去
*/
//第一步:计算有效数据的个数
int sum=0;
for(int[] row:array){
for(int val:row){
if(val!=0){
sum++;
}
}
}
//System.out.println(sum);
//定义稀疏数组
int[][] sparseArray=new int[sum+1][3];
sparseArray[0][0]=11;
sparseArray[0][1]=11;
sparseArray[0][2]=sum;
int x=1;
for(int i=0;i<11;i++){
for(int j=0;j<11;j++){
int y=0;
if(array[i][j]!=0){
sparseArray[x][y++]=i;
sparseArray[x][y++]=j;
sparseArray[x++][y]=array[i][j];
}
}
}
//输出稀疏数组
for(int[] row:sparseArray){
for(int value:row){
System.out.print(value+"\t");
}
System.out.println();
}
/**
* 将稀疏数组转为原始的二维数组
*/
int [][] yuanArray=new int[sparseArray[0][0]][sparseArray[0][1]];
for(int i=1;i<sum+1;i++){
yuanArray[sparseArray[i][0]][sparseArray[i][1]]=sparseArray[i][2];
}
for (int i=0;i<yuanArray.length;i++){
for (int j=0;j< yuanArray.length;j++){
System.out.print(yuanArray[i][j]+"\t");
}
System.out.println();
}
}
}
执行效果图