スパース配列を2次元配列に変換
2次元配列
対応するスパース配列を変換します
変換ルール
1.スパース配列の最初の行に対応する数は、行数(11)、列数(11)、および2次元配列の値の総数(5)です。
2.スパース配列の2行目が始まり、各行は2次元配列の値を表します。たとえば、2行目の1 1 1は、
添え字がchessarray [1 [1]である2次元配列を表します。値は1です。つまり、 chessarray [1 [1] = 1;などのように、各行は2次元配列内の値の場所です。
##コード
int chessArray[][] = new int[11][11];
//赋值
{
chessArray[1][1]=1;
chessArray[2][3]=2;
chessArray[3][3]=3;
chessArray[4][4]=4;
chessArray[6][6]=5;
}
//遍历计数总值
int dataNum = 0;
System.out.println("------------chessArray--------------");
for(int rows=0;rows < chessArray.length ; rows ++){
for (int col = 0 ;col < chessArray[rows].length; col++){
System.out.print(chessArray[rows][col]+" ");
if(chessArray[rows][col] != 0)
dataNum++;
}
System.out.println();
}
//开始转换成稀疏数组
int parseArray[][] = new int[dataNum+1][3];//定义稀疏数组
int sparseRow = 0;//稀疏数组第一行赋值
parseArray[sparseRow][0] =chessArray.length;
parseArray[sparseRow][1] = chessArray[0].length;
parseArray[sparseRow][2] = dataNum;
//二维数组中的值存储到稀疏数组
for(int rows=0;rows < chessArray.length ; rows ++){
for (int col = 0 ;col < chessArray[rows].length; col++){
if(chessArray[rows][col] != 0){
sparseRow++;
parseArray[sparseRow][0]=rows;
parseArray[sparseRow][1]=col;
parseArray[sparseRow][2]=chessArray[rows][col];
}
}
}
//打印稀疏数组
System.out.println("------------parseArray--------------");
for (int[] row : parseArray){
for(int data: row){
System.out.print(data+" ");
}
System.out.println();
}
ここに2次元配列を挿入して、コードの一部をスパース配列に変換します
上記のコードに従って反転を達成し、疎配列を2次元配列に変換します。
//定义一个稀疏数组
int[][] sparseArray = new int[6][3];
//初始化二维数组
sparseArray[0][0]= 11 ;
sparseArray[0][1]= 11 ;
sparseArray[0][2]= 5 ;
//赋值开始 二位数组的一个值 对应稀疏数组的一行
sparseArray[1][0]= 1 ;
sparseArray[1][1]= 1 ;
sparseArray[1][2]= 1 ;
//赋值开始 二位数组的一个值
sparseArray[2][0]= 2 ;
sparseArray[2][1]= 3 ;
sparseArray[2][2]= 2 ;
//赋值开始 二位数组的一个值
sparseArray[3][0]= 3 ;
sparseArray[3][1]= 3 ;
sparseArray[3][2]= 3 ;
//赋值开始 二位数组的一个值
sparseArray[4][0]= 4 ;
sparseArray[4][1]= 4 ;
sparseArray[4][2]= 4 ;
//赋值开始 二位数组的一个值
sparseArray[5][0]= 6 ;
sparseArray[5][1]= 6 ;
sparseArray[5][2]= 6 ;
//初始化二维数组
int[][] chessArray = new int[sparseArray[0][0]][sparseArray[0][1]];
System.out.println("------------sparseArray--------------");
for(int i = 0;i < sparseArray.length; i++){
if(i!=0){//稀疏数组与二维数组的转换
int row = sparseArray[i][0] ;
int col = sparseArray[i][1];
int data = sparseArray[i][2];
chessArray[row][col] = data;
}
for (int j =0 ;j < sparseArray[i].length ; j++){
System.out.printf("%d\t",sparseArray[i][j]);
}
System.out.println();
}
//把二维数组打印出来
System.out.println("------------chessArray--------------");
for(int rows=0;rows < chessArray.length ; rows ++){
for (int col = 0 ;col < chessArray[rows].length; col++){
System.out.printf("%d\t",chessArray[rows][col]);
}
System.out.println();
}