稀疏数组转二维数组

packagecom.tm.dataStu;

publicclassDataArr{

publicstaticvoidmain(String[]args){

//创建的原始的2维数组

//0表示没有棋子1表示黑子2表示蓝子

intcherArr[][]=newint[11][11];

cherArr[1][2]=1;

cherArr[2][3]=2;

for(inti=0;i<cherArr.length;i++){

for(inti1=0;i1<cherArr[i].length;i1++){

System.out.printf("%d\t",cherArr[i][i1]);

}

System.out.println();

}

//将二维数组转成稀疏数组的思路

//1.先遍历二维数组得到个非0的数组

intsum=0;//判断有几个非0的数

for(inti=0;i<cherArr.length;i++){

for(intj=0;j<cherArr[i].length;j++){

if(cherArr[i][j]!=0){

sum++;

}}

}

//2创建对应的稀疏数组

intsparseArr[][]=newint[sum+1][3];

//给稀疏数组赋值

sparseArr[0][0]=11;

sparseArr[0][1]=11;

sparseArr[0][2]=sum;

//遍历二维数组把非0的值存放到稀疏数组中(sparseArr

intcount=0;//count用来计算是第几个非0数字

for(inti=0;i<11;i++){

for(intj=0;j<11;j++){//sparseArr[[1,2,1][2,3,2]]

if(cherArr[i][j]!=0){

count++;//12

sparseArr[count][0]=i;//sparseArr[1][1]sparseArr[2][2]

sparseArr[count][1]=j;//sparseArr[1][2]sparseArr[2][3]

sparseArr[count][2]=cherArr[i][j];//sparseArr[1][1]sparseArr[2][2]

}}

}

for(inti=0;i<sparseArr.length;i++){

for(intj=0;j<sparseArr[i].length;j++){

System.out.printf("%d\t\n",sparseArr[i][j]);

}

}

//将稀疏数组----->恢复为二维数组

//1.先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组

intchessArr[][]=newint[sparseArr[0][0]][sparseArr[0][1]];

//2在读取稀疏数组后几行的数据(从第二行开始),并赋值给原始的二维数组即可

for(inti=1;i<sparseArr.length;i++){

chessArr[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];

}

//恢复后的二维数组

for(inti=0;i<chessArr.length;i++){

for(inti1=0;i1<chessArr[i].length;i1++){

System.out.printf("%d\t",chessArr[i][i1]);

}

System.out.println();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值