java实现稀疏数组
稀疏数组
首先,我们先了解一下稀疏数组是什么东西:
图片引用于csdn的https://blog.csdn.net/baolingye/article/details/99943083
作者:Marvellous丶
如有侵权或对你产生了扰乱,很抱歉,请联系我删除此帖
即
第一行第一列记录记录原始数组行数,
第一行第二列记录原始数组列数,
第一行第三列总共有多少个值,
第二行记录第一个有效数据,
第三行记录第二个有效数据
上代码!!!
import java.util.Arrays;
public class demo3 {
public static void main(String[] args) {
int[][] arr1={
{0,0,0,22,0,0,15},
{0,11,0,0,0,17,0},
{0,0,0,-6,0,0,0},
{0,0,0,0,0,39,0},
{91,0,0,0,0,0,0},
{0,0,28,0,0,0,0}
};
// System.out.println(arr1.length);//数组的行
// System.out.println(arr1[0].length);//数组的列
int value=0;//数组中元素值不为0的个数
//首先,遍历数组,得到元素值不为0的个数
for(int[] elem1:arr1)
{
for(int elem2:elem1)
{
if(elem2!=0)
{
value++;
}
}
}
//构造稀疏数组,因为第0行是总览,所以要+1
int[][] arr2=new int[value+1][3];
//表示当前arr2的长度
int k=1;
for(int i=0;i<arr1.length;i++)
{
for(int j=0;j<arr1[0].length;j++)
{
if(arr1[i][j]!=0)
{
arr2[k][0]=i;
arr2[k][1]=j;
arr2[k++][2]=arr1[i][j];
}
}
}
//第一行装载的总共有多少行,总共有多少列,总共有多少值
arr2[0]= new int[]{arr1.length, arr1[0].length, value};
//打印
for(int i=0;i<value+1;i++)
{
// for(int j=0;j<3;j++)
// {
// System.out.print(arr2[i][j]+" ");
// }
// System.out.println();
//上面的代码同下面的代码是一样的效果
//这是java中Arrays包中的静态函数,专门用来搞数组的,想要学习的可以看我博客里面翻一下
System.out.println(Arrays.toString(arr2[i]));
}
}
}
运行结果: