稀疏数组
基本介绍
当一个数组中大部分元素为0,或者同一个值的数组时,可以使用系数数组来保存该数组。
稀疏数组的处理方法是:
- 记录数组一共有几行几列,有多少个不同改的值。
- 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
稀疏数组转换
二维数组转稀疏数组的思路:
- 遍历 原始的二维数组,得到有效数据的个数sum
- 根据sum就可以创建 系数数组sparseArr intsum+1
- 将二维数组的有效数据存入到稀疏数组
稀疏数组转原始的二维数组的思路
- 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组。、
- 在读取稀疏数组后几行的数据,并赋给原始的二维数组即可。
代码示例
/**
*当前类用于将普通的二维数组转换为稀疏数组进行存储
*/
public class SparseArray {
public static void main(String[] args){
int a[][] = new int[6][6];
a[2][2] = 1;
a[3][4] = 2;
a[3][3] = 2;
a[3][5] = 2;
a[5][5] = 10;
//首先判断当前数组的大小
int row = 6;
int col = 6;
//遍历找出有多少个有效数字
int count = 0;
for(int i=0;i<row;i++){
for (int j=0;j<col;j++){
if(a[i][j]!=0){
count++;
}
}
}
//给稀疏数组第一行加入原始数据
int array[][] = new int[row][3];
array[0][0] = row;
array[0][1] = col;
array[0][2] = count;
//将有效的数字存入稀疏数组中
int num = 1;
for(int i=0;i<row;i++){
for (int j=0;j<col;j++){
if(a[i][j]!=0){
array[num][0]=i;
array[num][1]=j;
array[num][2]=a[i][j];
num++;
}
}
}
//开始输出稀疏数组
for(int i=0;i<count+1;i++){
for (int j=0;j<3;j++){
System.out.print(array[i][j]+" ");
}
System.out.println();
}
}
}
评论 (0)