稀疏数组
稀疏数组
概念:当一个数组中大部分元素为0,或者同一个值,可以用稀疏数组来表示该数组。
处理方法
- 记录数组一共有几行几列,有多少个不同的值。
- 把具有不同值的行列值放在一个小数组中。
应用

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
注意数组越界问题。

浙公网安备 33010602011771号