1.3.1 稀疏数组
概念:当一个数组中大部分元素为0,或者为同一值时,可以使用稀疏数组来保存数组。稀疏数组剔除了数组中没有意义的数(0或者大部分相同的元素)只保存特殊的有意义的数值,以缩小保存数组的规模,节省空间资源的占用。
稀疏数组只有三列 :第一列记录值在原二维数组中的行数,第二列记录值在原二维数组中的列数,第三列为值的大小。
稀疏数组的处理方法:
1)记录数组的规模,即几行几列,有几个不同的值(写在稀疏数组的第一行)。
2)仅将具有不同值的元素的行列位置纪录在一个小规模数组中,从而缩小程序的规模。
原二维数组
所对应的稀疏数组
二维数组转稀疏数组的思路:
1)遍历原二维数组,得到不同的值的个数n个。
2)创建稀疏数组 spareseArr int [n+1] [3] (因为除了存放不同的值外,在稀疏数组第一行还要存放原数组的行数和列数及不同的值的个数,所以是n+1行)
3)将原二维数组的不同的值存入稀疏数组。
代码实现
1.创建原二维数组并设置两个不同的特殊值
原二维数组结果如下:(仅在第二行第三列和第三行第四列有值)
2.将此二维数组转化为稀疏数组:
稀疏数组结果如下:
由此可见,稀疏数组相比原二维数组可大大节省空间资源的占用