package com.atguigu.sparsearry;
public class SparseArry {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建二维数组
//1代表黑子,2代表蓝子
int chessArr1[][]=new int[11][11];
chessArr1[1][2]=1;
chessArr1[2][3]=2;
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 j=0;j<chessArr1.length;j++) {
if(chessArr1[i][j]!=0) {
sum++;
}
}
}
//创建对应的稀疏数组
int sparseArry[][]=new int[sum+1][3];
sparseArry[0][0]=11;
sparseArry[0][1]=11;
sparseArry[0][2]=sum;
//遍历二维数组,将二维数组里面的数据放入稀疏数组
int count=0;//计数器
for(int i=0;i<chessArr1.length;i++) {
for(int j=0;j<chessArr1.length;j++) {
if(chessArr1[i][j]!=0) {
count++;
sparseArry[count][0]=i;
sparseArry[count][1]=j;
sparseArry[count][2]=chessArr1[i][j];
}
}
}
System.out.println();
System.out.println("得到的稀疏数组为:-----");
for (int i = 0; i < sparseArry.length; i++) {
System.out.printf("%d\t%d\t%d\t\n",sparseArry[i][0],sparseArry[i][1],sparseArry[i][2]);
}
System.out.println(count);
//恢复二维数组
int chessArr2[][]=new int[sparseArry[0][0]][sparseArry[0][1]];
//遍历稀疏数组
for(int i=1;i<sparseArry.length;i++) {
chessArr2[sparseArry[i][0]][sparseArry[i][1]]=sparseArry[i][2];
}
System.out.println("恢复后的二维数组");
for(int row[]:chessArr2) {
for(int data:row) {
System.out.printf("%d\t", data);
}
System.out.println();
}
}
}
【数据结构与算法】二维数组和稀疏数组之间的互相转化
最新推荐文章于 2021-04-28 11:54:23 发布