二维数组

第一行存的是原数组的行数列数,有效值个数,下面的存放每一个有效值的行纵坐标以及值

 

 

//创建一个稀疏数组,稀疏数组的意义在于,数组中有大量数字相同的情况下,存储有效数据
//创建一个新的稀疏数组,
/**
* 二维数组本质上,可以理解为 是两个数组进行嵌套
*
*/
int[][] array=new int[11][11];
array[2][3]=2;
array[1][3]=2;
// 遍历数组
for(int[] arr:array){
   for (int i:arr){
       System.out.print(i+"\t");
  }
   System.out.println();
}

 

 

需要用双层for each循环遍历数组

转换稀疏数组之前,先获得数组中的有效数字sum

int sum=0;
for (int i = 0; i < array.length; i++) {
   for (int j = 0; j < array[i].length; j++) {
       if (array[i][j]!=0){
           sum+=1;
      }
  }
}
System.out.println("有效个数为:"+sum);

转换稀疏数组 array1,并遍历array1

int[][] array1=new int[sum+1][3];
array1[0][0]=11;
array1[0][1]=11;
array1[0][2]=2;
int total=0;
for (int i = 0; i < array.length; i++) {
   for (int j = 0; j < array[i].length; j++) {
       if (array[i][j]!=0){
           total++;
           array1[total][0]=i;
           array1[total][1]=j;
           array1[total][2]=array[i][j];
      }
  }
}
for(int[] arr:array1){
   for (int i:arr){
       System.out.print(i+"\t");
  }
   System.out.println();
}

 

 

并通过稀疏数组进行一个还原,并且遍历还原的数组,进行比对

 

 

 

posted on 2021-11-21 15:37  Forever、H  阅读(93)  评论(0)    收藏  举报