1、稀疏数组的处理方法
- 记录数组一共有几行几列,有多少个不同的值
- 把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模
举例:
第一行记录的是:原数组的总行数,原数组的总列数,原数组的非0的值的个数
从第二行开始记录的是:每一个非0的值所在的行,所在的列,对应的具体值
原数组6行,7列的结构,变成了9行,3列的稀疏数组。
2、二维数组转换稀疏数组的思路
- 遍历原始的二维数组,得到有效数据的个数 $sum
- 根据$sum就可以创建稀疏数组
- 将二维数组的有效数据存入到稀疏数组中
3、稀疏数组转换二维数组的思路
- 先读取稀疏数组的第一行,根据第一行的数据,创建二维数组
- 再读取稀疏数组的第二行开始的数据,并赋值给二维数组
PHP代码实现稀疏数组
<?php
$arr = array();
$row = $col = 11; // 定义一个11 * 11的二维数组
for ($i = 0; $i < $row; $i++) {
for ($j = 0; $j < $col; $j++) {
$arr[$i][$j] = 0;
}
}
$arr[1][2] = 1;
$arr[2][4] = 2;
// 初始化一个二维数组
echo "转换之前的二维数组:\n";