稀疏数组
1、稀疏数组
1)基本原理
(1)数组中大部分元素为0或同一个值,可用稀疏数组保存该数组
2)具体实现
1)稀疏数组共有3列;
2)系数数组的第1行的3列分别保存原始二维数组的:行数,列数,非0元素个数;
3)系数数组的下面每一行的3列分别保存原始二维数组中非0元素的:行标,列标,元素值
public class SparseArray{
public static void mian(String[], args){
// 生成二维数组
int arr1[][] = new int[11][11];
arr1[1][2] = 1;
arr1[2][3] = 2;
// 遍历二维数组,统计非零元素个数
int sum = 0;
for(int i = 0; i < arr1.length; i++){
for(int j = 0; j < arr1[0].length; j++){
if(arr1[i][j] != 0){
sum++;
}
}
}
// 创建稀疏数组
int sparseArr[][] = new int[sum + 1][3];
sparseArr[0][0] = arr1.length;
sparseArr[0][1] = arr1[0].length;
sparseArr[0][2] = sum;
int count = 0;
// 二维数组转稀疏数组
for(int i = 0; i < arr1.length; i++){
for(int j = 0; j < arr1[0].length; j++){
if(arr1[i][j] != 0){
count++;
sparseArr[count][0] = i;
sparseArr[count][1] = j;
sparseArr[count][2] = arr1[i][j];
}
}
}
// 稀疏数组转二维数组
int arr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
for(int i = 1; i < sparseArr.length; i++){
arr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
}
}
}