稀释数组与二维数组的转换

稀疏数组:当一个数组中大部分元素为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();
    }
}
}

 

     

 

posted on 2020-11-01 10:23  java不白吃  阅读(78)  评论(0)    收藏  举报