稀释数组与二维数组的转换
稀疏数组:当一个数组中大部分元素为0,或者为同一个值得数组时,可以用稀疏数组
数组:4行5列

改为稀疏数组

二维数组==》稀疏数组
1.遍历原始的二维数组得有效数据的个数sum,
2.根据sum可以创建稀疏数组SparseArr int[sum+1][3]
3.将二维数组的有效值存入到SparseArr

数组:

获取sum的值

遍历数组获取到稀疏数组

稀疏数组==》二维数组
1.先读取稀疏数组的第一行,创建原始数组
2.再读取稀疏数组的后几行数据,并赋值给二维数组。

详细代码:
package dataSourse; public class SpaerAllDemo { public static void main(String[] args) { int[][] cheeseArr=new int[11][11]; cheeseArr[1][2]=1; cheeseArr[2][3]=2; for(int[] row:cheeseArr){ for(int data:row){ System.out.printf("%d ",data); } System.out.println(); } int sum=0; for(int i=0;i<11;i++){ for(int j=0;j<11;j++){ if(cheeseArr[i][j]!=0){ sum++; } } } System.out.println(sum); int[][] spareAll=new int[sum+1][3]; int count=0; spareAll[0][0]=11; spareAll[0][1]=11; spareAll[0][2]=sum; for(int i=0;i<11;i++){ for(int j=0;j<11;j++){ if(cheeseArr[i][j]!=0){ count++; spareAll[count][0]=i; spareAll[count][1]=j; spareAll[count][2]=cheeseArr[i][j]; } } } System.out.println("輸出稀疏矩陣"); for(int i=0;i<=count;i++){ for(int j=0;j<3;j++){ System.out.print(spareAll[i][j]+" "); } System.out.println(); } System.out.println("============="); for(int i=0;i<spareAll.length;i++){ System.out.printf("%d\t%d\t%d\t\n",spareAll[i][0],spareAll[i][1],spareAll[i][2]); } System.out.println("稀疏矩陣轉二維數組"); int col=spareAll[0][0]; int row=spareAll[0][1]; int[][] binArray=new int[col][row]; for(int i=1;i<spareAll.length;i++){ binArray[spareAll[i][0]][spareAll[i][1]]=spareAll[i][2]; } System.out.println(spareAll.length); for(int i=0;i<col;i++){ for(int j=0;j<row;j++){ System.out.printf("%d ",binArray[i][j]); } System.out.println(); } } }
浙公网安备 33010602011771号