package com.zl;
/**
*
*稀疏数组:用于压缩、解压缩
*/
public class SparseArray {
public static void main(String[] args) {
//构建原始二维数组
int[][]arr1 = new int[11][11];
arr1[1][1]=1;
arr1[2][2]=2;
System.out.println("原始二维数组:");
for (int[] is : arr1) {
for (int i : is) {
System.out.print(i+"\t");
}
System.out.println();
}
//压缩成稀疏数组
int count = 0;
for (int[] is : arr1) { //获得有效数据个数
for (int i : is) {
if(i != 0) {
count++;
}
}
}
//稀疏数组
int [][] sparr = new int[count+1][3];
sparr[0][0] = arr1.length; //保存行个数
sparr[0][1] = arr1[0].length; //保存列个数
sparr[0][2] = count; //保存有效个数
int k = 1;
for (int i = 0; i < arr1.length; i++) {
for (int j = 0; j < arr1[i].length; j++) {
if(arr1[i][j] != 0 ) {
sparr[k][0] = i;
sparr[k][1] = j;
sparr[k++][2] = arr1[i][j];
}
}
}
System.out.println("压缩后的稀疏数组:");
for (int i = 0; i < sparr.length; i++) {
for (int j = 0; j < 3; j++) {
System.out.print(sparr[i][j]+"\t");
}
System.out.println();
}
//解压
int [][] arr2 = new int[sparr[0][0]][sparr[0][1]];
for (int i = 1; i < sparr.length; i++) {
arr2[sparr[i][0]][sparr[i][1]] = sparr[i][2];
}
System.out.println("解压后的二维数组:");
for (int[] is : arr2) {
for (int i : is) {
System.out.print(i+"\t");
}
System.out.println();
}
}
}
java实现稀疏数组用于压缩解压缩
于 2022-04-01 13:29:49 首次发布