矩阵的压缩存储
5.1 普通矩阵的存储
-  用二维数组存储 分为行优先和列优先: 行优先:优先存放一行的数据。 列优先:优先存放一列的数据。  - 注意下标是从0还是1开始的!
 
5.2 对称矩阵的存储
-  对称矩阵定义 若n阶方阵中任意一个元素 a i , j a_{i,j} ai,j都有 a i , j = a j , i a_{i,j}=a_{j,i} ai,j=aj,i。  
-  压缩存储策略 只存储上或下三角区和主对角线。 
-  例:按行优先将各元素存入一维数组中 -  数组大小应为多大? 1 + 2 + 3 + 4... + n = ( 1 + n ) ∗ n / 2 1+2+3+4...+n=(1+n)*n/2 1+2+3+4...+n=(1+n)∗n/2  
-  如何把矩阵下标转化为一维数组下标?  
 - 因为矩阵对称,所以可以将上三角区域元素的i和j互换,就变成和下三角区域一样了
 i ( i − 1 ) / 2 i(i-1)/2 i(i−1)/2是第i行前1~i-1行的所有元素数量; j − 1 j-1 j−1是 a i , j a_{i,j} ai,j元素在第i行的前的元素数量。如图:  
-  
5.3 三角矩阵的压缩存储
-  三角矩阵 上三角区域或者下三角区域为一常量。 
-  存储方法 非常量区域和对称矩阵存储方法一毛一样。 在数组最后存储常量的值。  
5.4 三对角矩阵的压缩存储
-  三对角矩阵的定义 当 ∣ i − j ∣ > 1 |i-j|>1 ∣i−j∣>1,有 a i , j = 0 a_{i,j}=0 ai,j=0。  
-  存储方式 只要存储值不为0的元素就好。  -  如何将数组下标k转换为矩阵下标i,j?  
 
-  
5.5 稀疏矩阵的压缩存储
-  稀疏矩阵定义 非零元素远少于矩阵元素个数。 
-  存储方式 1.顺序存储  会失去随机存储的特性。  2.链式存储——十字链表法 