二,二维数组与稀疏数组
实现二维数组与稀疏数组转换
1,创建一个二维数组
public static int[][] chessArry1(){
int chessArray1[][]=new int[11][11];
chessArray1[1][2]=2;
chessArray1[2][3]=1;
chessArray1[4][5]=9;
return chessArray1;
}
public static void chessArray1ToString(){
int[][] ints = chessArry1();
for(int[] rows:ints){
for(int data:rows){
System.out.printf("%d\t",data);
}
System.out.println();
}
}
public static int sum(){
int sum=0;
for(int i=0;i<chessArry1().length;i++){
for(int j=0;j< chessArry1().length;j++){
if(chessArry1()[i][j]!=0){
sum++;
}
}
}
return sum;
}
2,创建一个稀疏数组
public static int[][] sparseArray(){
int [][]sparseArr=new int[sum()+1][3];
sparseArr[0][0]= chessArry1().length;
sparseArr[0][1]= chessArry1().length;
sparseArr[0][2]=sum();
int count=0;
for(int i=0;i<chessArry1().length;i++){
for(int j=0;j< chessArry1().length;j++){
if(chessArry1()[i][j]!=0){
count++;
sparseArr[count][0]=i;
sparseArr[count][1]=j;
sparseArr[count][2]=chessArry1()[i][j];
}
}
}
return sparseArr;
}
public static void sparseArrToString(){
for(int i=0;i<sparseArray().length;i++){
System.out.printf("%d\t%d\t%d\t\n",sparseArray()[i][0],sparseArray()[i][1],sparseArray()[i][2]);
}
}
3,稀疏数组恢复为二维数组
public static int [][]chessArray2(){
int [][]chessArray2=new int[sparseArray()[0][0]][sparseArray()[0][1]];
for(int i=1;i< sparseArray().length;i++){
chessArray2[sparseArray()[i][0]][sparseArray()[i][1]]=sparseArray()[i][2];
}
return chessArray2;
}