稀疏数组
2021-06-28 本文已影响0人
大旺旺的弟弟小旺旺
稀疏数组:
一般使用在存在大量相同数据的表格中,存储了许多没有意义的数据。举个例子:一个数组存储了100个数据,有效数据只有10个,就可以使用稀疏数组存储。
稀疏数组处理的方法:
- 记录行和列个数
- 将不同值元素的行列 以及数组存储在一个小的数组中 ,缩小存储数据占用的空间。
0 0 0 0 0 0
1 0 0 5 3 0
4 0 0 2 2 9
0 0 0 0 0 0
我们的存储方式
- 几行几列
- 数据在哪里,数据是多少?
我们创建一个数组就存储这些数据,所有我们需要提起的计算有多少个有效数字。然后创建出arr[n+1][3]的数组。
代码实现
public void ArrayToSparseArray(int [][]arr){
int num = totalChar(arr,0); //一共多少个数据
//创建数组
int sparseArr[][] = new int[num+1][3]; //创建存放数据的数组
sparseArr[0][0] = arr.length;
sparseArr[0][1] = arr[0].length; //00 位置 存储的是行个数,列个数,以及数据个数。
sparseArr[0][2] = num;
int iIndex = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
if (arr[i][j]!=0){
iIndex ++;
sparseArr[iIndex][0] = i;
sparseArr[iIndex][1] = j;
sparseArr[iIndex][2] = arr[i][j];
}
}
}
}
public int totalChar(int arr[][],int t){
int num = 0;
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
if (arr[i][j] == t){
num++;
}
}
}
return num;
}
public void huifu(int arr[][]){
int arrTemp[][] = new int[arr[0][0]][arr[0][1]];
for (int i = 1; i < arr.length; i++) {
arrTemp[arr[1][0]][arr[1][1]] = arr[1][2];
}
}
代码很简单没什么可以说的。