应用案例
稀疏数组转换思路分析
代码:
public class test { public static void main(String[] args) { //稀疏数组 //1、先创建一个二维数组 11*11 //0表示没有棋子,1表示黑子,2表示蓝子 int chessArray1[][] = new int[11][11]; chessArray1[1][2] = 1; chessArray1[2][3] = 2; //输出原始的二维数组 System.out.println("原始的稀疏数组"); for(int i = 0;i < chessArray1.length;i++) { for(int j = 0;j < chessArray1[i].length;j++) { System.out.print(" "+chessArray1[i][j]); } System.out.println(); } //将二维数组转换为稀疏数组 //1.首先遍历二维数组,找到有效数字 int sum = 0; for(int i = 0;i < chessArray1.length;i++) { for(int j = 0;j < chessArray1[i].length;j++) { if(chessArray1[i][j] != 0) sum++; } } System.out.print("有效数字的个数:"); System.out.println(sum);//输出有效数字的个数 //2.创建对应的稀疏数组 int sparseArr[][] = new int[sum+1][3]; //给稀疏数组赋值 sparseArr[0][0] = 11; sparseArr[0][1] = 11; sparseArr[0][2] = sum; //遍历二维数组将非0的值存入稀疏数组中 int count = 1; for(int i = 0;i < chessArray1.length;i++) { for(int j = 0;j < chessArray1[i].length;j++) { if(chessArray1[i][j] != 0) { sparseArr[count][0] = i; sparseArr[count][1] = j; sparseArr[count][2] = chessArray1[i][j]; count++; } } } //输出稀疏数组的形式 System.out.println("输出稀疏数组"); for(int i = 0;i < sparseArr.length;i++) { for(int j = 0;j < sparseArr[i].length;j++) { System.out.print(" "+sparseArr[i][j]); } System.out.println(); } //将稀疏数组恢复成原来的二维数组 //1.读取稀疏数组的第一行,根据第一行数据,创建稀疏数组 int chessArray2[][] = new int[sparseArr[0][0]][sparseArr[0][1]]; //2.把稀疏数组的后几行数据给二维数组 for(int i = 1;i < sparseArr.length;i++) { chessArray2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2]; } //3.打印转换之后的二维数组 System.out.println("转换之后的二维数组"); for(int i = 0;i < chessArray2.length;i++) { for(int j = 0;j < chessArray2[i].length;j++) { System.out.print(" "+chessArray2[i][j]); } System.out.println(); } } }
运行结果:
原始的稀疏数组
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
有效数字的个数:2
输出稀疏数组
11 11 2
1 2 1
2 3 2
转换之后的二维数组
0 0 0 0 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0
0 0 0 2 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0