稀疏数组的定义:
当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
稀疏数组的处理方式是:记录数组一共有几行几列,有多少个不同值;把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模
1.原数组的格式
2.我们需要把以上的数组使用稀疏数组进行表示出来
3.原数组的实现
public static void main(String[] args) { int [][]arrays=new int[11][11]; arrays[1][2]=1; arrays[2][3]=2; System.out.println("输出原始数组"); for(int [] ints :arrays){ for ( int anInt : ints){ System.out.print(anInt+"\t"); } System.out.println(); }
4.求有效数字的个数
int sum=0; for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays.length; j++) { if(arrays[i][j]!=0){ sum++; } } } System.out.println("有效数字为:"+sum);
5.创建一个稀疏数组并输出格式
//2.创建一个稀疏数组 int [][]array2=new int[sum+1][3]; array2[0][0]=arrays.length; array2[0][1]=arrays.length; array2[0][2]=sum; //遍历二维数组,将非零的值,存放稀疏数组中 int count=0; for (int i = 0; i <arrays.length ; i++) { for (int j = 0; j <arrays[i].length ; j++) { if(arrays[i][j]!=0){ count++; array2[count][0]=i; //第count行0列为 行坐标 array2[count][1]=j; //第count行1列为 列坐标 array2[count][2]=arrays[i][j]; //第count行2列为 值 } } } for (int i = 0; i <array2.length ; i++) { System.out.println(array2[i][0]+"\t"+array2[i][1]+"\t"+array2[i][2]+"\t"); }
6.还原原始数组
//还原原数组 int array3[][]=new int[array2[0][0]][array2[0][1]]; array3[array2[1][0]][array2[1][1]]=array2[1][2]; array3[array2[2][0]][array2[2][1]]=array2[2][2]; for(int []s : array3){ for (int s1 : s){ System.out.print(s1+"\t"); } System.out.println(); }