二维数组转稀疏数组思路: * 1、创建一个二维数组,遍历获取有效数据的个数sum * 2、根据sum创建稀疏数组int[sum+1][3]并对于第一行属性处赋值 * 3、遍历二维数组将有效数据存入稀疏数组
稀疏数组转二维数组思路:
1、通过稀疏数组获取二维数组的行列值2、读取稀疏数组第二行及第二行之后的数据赋给二维数组 public class 稀疏数组 { public static void main(String[] args) { //创建一个二维数组 int[][] Arr1 = new int[11][11]; Arr1[1][2]=1; Arr1[2][3]=2; Arr1[4][5]=2; //遍历获取有效数据的个数sum int sum=0; //遍历行数i与列数i1 for (int i = 0; i < Arr1.length; i++) { for (int i1 = 0; i1 < Arr1[i].length; i1++) { if (Arr1[i][i1]!=0){ sum++; } } } //根据sum创建稀疏数组 int[][] sparseArr = new int[sum+1][3]; //稀疏数组第0行赋值 sparseArr[0][0]=11; sparseArr[0][1]=11; sparseArr[0][2]=sum; //遍历二维数组,非0值存入稀疏数组 int count=0; for (int i = 0; i < Arr1.length; i++) { for (int i1 = 0; i1 < Arr1[i].length; i1++) { if (Arr1[i][i1]!=0){ count++; sparseArr[count][0]=i;//第一列存非0值所在行数 sparseArr[count][1]=i1;//第二列存非0值所在列数 sparseArr[count][2]=Arr1[i][i1];//第三列存非0值 } } } //查看稀疏数组 for (int i = 0; i < sparseArr.length; i++) { for (int i1 = 0; i1 < 3; i1++) { System.out.print(sparseArr[i][i1]+" "); } System.out.println(); } //稀疏数组转二维数组 根据稀疏数组第一行属性值创建一个二维数组 int[][] Arr2 = new int[sparseArr[0][0]][sparseArr[0][1]]; //遍历稀疏数组 将有效值赋给二维数组 for (int i = 1; i < sparseArr.length; i++) { Arr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2]; } //遍历二维数组 System.out.println("新的二维数组: "); for (int i = 0; i < Arr2.length; i++) { for (int j = 0; j < Arr2[i].length; j++) { System.out.print(Arr2[i][j]+" "); } System.out.println(); } } }输出结果:
稀疏数组: 11 11 3 1 2 1 2 3 2 4 5 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 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