稀疏数组

稀疏数组

概念:当一个数组中大部分元素为0,或者同一个值,可以用稀疏数组来表示该数组。

处理方法

  1. 记录数组一共有几行几列,有多少个不同的值。
  2. 把具有不同值的行列值放在一个小数组中。

应用

package 稀疏数组;

public class 稀疏数组练习 {
    public static void main(String[] args) {
        int arr[][]=new int[11][11];
        arr[1][2]=1;
        arr[2][3]=2;
        arr[4][5]=2;
        //遍历数组
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
            }
        }
//将二维数组转换为稀疏数组
 /*思路:1、遍历数组得到非零数值的个数,从而确定稀疏数组的大小,创建稀疏数组
        2、遍历原数组将非0的数组的行列值存入数组中。  */
        int sum=0;//用于记录非0数值的个数。
        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
               if(arr[i][j]!=0){
                   sum++;
               }
            }
        }

        int sparsearr[][]=new int[sum+1][3];
        int count=0;

        sparsearr[0][0]=11;
        sparsearr[0][1]=11;
        sparsearr[0][2]=3;

        for(int i=0;i<arr.length;i++){
            for(int j=0;j<arr[i].length;j++){
                if(arr[i][j]!=0){
                  count++;
                  sparsearr[count][0]=i;
                  sparsearr[count][1]=j;
                  sparsearr[count][2]=arr[i][j];
                }
            }
        }
        for(int i=0;i<sparsearr.length;i++){
            for(int j=0;j<sparsearr[i].length;j++){
                System.out.println(sparsearr[i][j]);
            }
        }
    }

}

//将稀疏数组转换为原数组
int arr1[][]=new int[sparsearr[0][0]][sparsearr[0][1]];
for(inti=1;i<sparsearr.length;i++){
    arr1[sparsearr[i][0]][sparsearr[i][0]]=sparsearr[i][2];
}
注意:二位数组的行长度:arr.length
      二维数组的列长度:arr[i].length
        注意数组越界问题。

posted @ 2020-12-22 21:53  胡木杨  阅读(102)  评论(0)    收藏  举报