视频链接:008_尚硅谷_稀疏数组转换的思路分析_哔哩哔哩_bilibili
首先本人也是小白一枚,这里只能讲一讲我本人的理解,大伙可以去视频里面学习
首先看这上面的两张图,第一张是我们平时的二维数组,当然,下面就是所说的稀疏数组,
我个人理解就是对于二维数组很多无效数据的一种简化.
稀疏数组的第一行比较特殊,第一行存储的是:
第一行第一个数就是二维数组的横列数,第一行第二个数就是二维数组的纵列数,第一行第三个数就是二维数组的有效数的个数(对于什么样的是有效值:就是二维数组中不为零的数据)
从第二行开始就是二维数组有效值的纵坐标和横坐标.....
下面是用java代码实现的二维数组转稀疏数组:
//定义一个二维数组
int[][] array=new int[11][11];
//给二维数组添加有效值
array[5][4]=1;
array[7][3]=2;
//定义一个数值记录二维数组里面的有效值
int sum=0;
//遍历二维数组的有效值个数
for(int i=0; i<11; i++){
for(int j=0; j<11; j++){
if(array[i][j]!=0){
sum++;
}
}
}
//定义一个稀疏数组
int[][] sparseArray=new int[sum+1][3];
//稀疏数组第一行分别记录二维数组的横纵数量和有效数量
sparseArray[0][0]=11;
sparseArray[0][1]=11;
sparseArray[0][2]=3;
//定义一个数值记录稀疏数组的行号
int mark=0;
//遍历二维数组有效值准备放到稀疏数组里面
for(int i=0; i<11; i++){
for(int j=0; j<11; j++){
if(array[i][j]!=0){
mark++;
sparseArray[mark][0]=i;
sparseArray[mark][1]=j;
sparseArray[mark][2]=array[i][j];
}
}
}
//把稀疏数组遍历出来看看效果
for (int i=0; i<sparseArray.length; i++){
System.out.println(sparseArray[i][0]+"---"+sparseArray[i][1]+"---
"+sparseArray[i][2]);
}
}
看到这里对于稀疏数组转为二维数组也是思考一下就可以想出来了,大家快去试试