数组练习--->二维数组转换为稀疏数组
public class SparseArrayDemo1 { public static void main(String[] args) { /** * 1.输出原始二维数组 */ int[][] chessArray = new int[11][11]; chessArray[1][2] = 1; chessArray[2][3] = 2; System.out.println("原始二维数组:"); for(int i=0;i<chessArray.length;i++){ //将其想成为一维数组 for(int j = 0;j<chessArray[i].length;j++){ System.out.print(chessArray[i][j]+"\t"); } System.out.println(); } /** * 2.将二维数组转换为稀疏数组 * 用来统计原始数组里有几个有意义的数 * sum用来遍历原始数组 统计有效数字个数 */ int sum = 0;//用于存储有效数值的个数 for(int i=0;i<11;i++){ for(int j = 0;j<11;j++){ if(chessArray[i][j]!=0){ sum++; } } } /** * 3.创建稀疏数组,并将总数赋值给稀疏数组第一行 * sum 相当于稀疏数组的行 */ int[][] sparseArray = new int[sum+1][3]; //稀疏数组第一行,将总行,总列,有效数值赋值给第一行 sparseArray[0][0] = 11; sparseArray[0][1] = 11; sparseArray[0][2] = sum; /** * 4.将非0的数值存入到稀疏数组里 * count 相当于 */ int count = 0; for(int i=0;i<chessArray.length;i++){ for(int j=0;j<chessArray[i].length;j++){ if(chessArray[i][j]!=0){ count++; sparseArray[count][0] = i; sparseArray[count][1] = j; sparseArray[count][2] = chessArray[i][j]; } } } //输出稀疏矩阵 System.out.println(); System.out.println("稀疏数组:"); for (int i = 0; i < sparseArray.length; i++) { System.out.println(sparseArray[i][0]+"\t" +sparseArray[i][1]+"\t" +sparseArray[i][2]+"\t"); } /** * 将稀疏数组恢复成二维数组 * 1.根据稀疏数组第一行,创建二维数组 * 2.读取稀疏数组后几行,赋值给二维数组 * 这里是从第二行开始的 */ 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]; } System.out.println("恢复后的二维数组:"); for(int[] row:chessArray2){ for(int data:row){ System.out.print(data+"\t"); } System.out.println(); } } }