稀疏数组-java数据结构
Posted 旧时星空
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了稀疏数组-java数据结构相关的知识,希望对你有一定的参考价值。
##Java数据结构与算法
稀疏数组
稀疏数组的作用是在数组中大多数的值为0或者大多数的值相同时压缩数据量;
本例是二维数组与稀疏数组的转换,稀疏数组有三个属性:行,列,值
第一行记录二维数组的行列,以及少数不同值的总个数。
第二行开始记录各个数值在二维数组中的行,列,以及值。
public class SparseArray {
public static void main(String[] args) {
//创建二维数组存储
int[][] array1=new int[11][11];
array1[0][0]=1;
array1[1][2]=2;
array1[0][5]=1;
array1[3][3]=2;
array1[4][2]=1;
array1[6][2]=2;
for(int[] row : array1) {
for(int a:row) {
System.out.printf("%d\\t",a);
}
System.out.println();
}
int sum=0;
for(int i=0;i<array1.length;i++) {
for(int j=0;j<array1[i].length;j++) {
if (array1[i][j]!=0) {
sum++;
}
}
}
//将二维数组转为稀疏数组
System.out.println(sum);
int[][] array2=new int[sum+1][3];
array2[0][0]=11;
array2[0][1]=11;
array2[0][2]=sum;
int count=1;
for(int i=0;i<array1.length;i++) {
for(int j=0;j<array1[i].length;j++) {
if (array1[i][j]!=0) {
array2[count][0]=i;
array2[count][1]=j;
array2[count][2]=array1[i][j];
count++;
}
}
}
//打印稀疏数组
for(int[] row : array2) {
for(int a:row) {
System.out.printf("%d\\t",a);
}
System.out.println();
}
//将稀疏数组转为二维数组
int[][] array3=new int[array2[0][0]][array2[0][1]];
for(int i=1;i<array2.length;i++) {
array3[array2[i][0]][array2[i][1]]=array2[i][2];
}
//打印二维数组
for(int[] row : array3) {
for(int a:row) {
System.out.printf("%d\\t",a);
}
System.out.println();
}
}
}
}
}
}
以上是关于稀疏数组-java数据结构的主要内容,如果未能解决你的问题,请参考以下文章