稀疏数组
public class Run {
public static void main(String[] args) {
//需要转化的数组
int num[][]=new int[11][11];
num[1][2]=1;
num[2][3]=2;
//遍历打印原始数组
for(int[] row:num){
for(int data:row){
System.out.printf("%d\t",data);
}
System.out.println();
}
//创建稀疏数组
//1、遍历数组,计算非零数个数
int nonZero=0;
for(int[] row:num){
for(int data:row){
if(data != 0){
nonZero++;
}
}
}
//2、创建稀疏数组
int[][] sparseNum=new int[nonZero+1][3];
sparseNum[0][0]=num.length;
sparseNum[0][1]=num[1].length;
sparseNum[0][2]=nonZero;
//3、给稀疏数组赋值
int count=1;
for(int i=0;i<num.length;i++){
for(int j=0;j<num[i].length;j++){
if(num[i][j] !=0){
sparseNum[count][0]=i;
sparseNum[count][1]=j;
sparseNum[count][2]=num[i][j];
count++;
}
}
}
//4、打印稀疏数组
for(int[] row:sparseNum){
for(int data:row){
System.out.printf("%d\t",data);
}
System.out.println();
}
//稀疏数组回复成正常数组
//1、根据稀疏数组1行数据创建数组
int[][] newnum=new int[sparseNum[0][0]][sparseNum[0][1]];
for(int i=1;i<sparseNum.length;i++){
newnum[sparseNum[i][0]][sparseNum[i][1]]=sparseNum[i][2];
}
//2、打印被回复数组
for(int[] row:newnum){
for(int data:row){
System.out.print(data+"\t");
}
System.out.println();
}
}
}