1.为什么要用稀疏数组?
图1
像这样一个二维数组,有效元素很少,但是却浪费了大量的内存空间
于是 稀疏数组就诞生了
图2
2.什么是稀疏数组?
像图2一样,
稀疏数组 sparsearray
当一个数组中大部分元素为0或为同一个值时,可用稀疏数组来保存该数组。
处理方法
1.记录原数组一共有几行几列,有多少有效元素(即为图二第一行,五行,五列, 五个有效元素)
2.存有效元素,从第二行开始。
3.代码实现
package 稀疏数组;
import java.util.Arrays;
public class X {
int[][] a;
public X(int[][] a){this.a=a;}
public int[][] f(){
int num=0;
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
if(a[i][j]!=0){
num++;
}
}
}//得到二维数组非零值的个数num
int[][] y=new int[num+1][3];//创建稀疏数组
y[0][0]=a.length;y[0][1]=a[0].length;y[0][2]=num;//给稀疏数组第一行赋值
int con=0;
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++){
if(a[i][j]!=0){
con++;
y[con][0]=i;
y[con][1]=j;
y[con][2]=a[i][j];
}
}
}//给稀疏数组其余行赋值
p(a);
p(y);
return y;
}
public void p(int[][] s){//打印二维数组,仅用于展示效果
for(int i=0;i<s.length;i++){
System.out.println(Arrays.toString(s[i]));
}
}
}
4.点个关注,谢谢亲的支持