数据结构-二维数组-对称矩阵压缩存储
一、什么是对称矩阵
对称矩阵,顾名思义就是矩阵中的元素是对称的,那具体是关于什么对称呢?就是关于对角线对称,即关于左上角到右下角的对角线对称,如下图:
⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢a21a41a61a12a22a62a14a44a64a16a26a46a66⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥
其中 a22 、 a44 、 a66 在对角线上,其他元素都满足 aij=aji 特点,类似于这样的矩阵就是对称矩阵,(其中只写出来几个示例元素,没表示出来的具有相同的特点)很容易看出只要存储矩阵中的上三角元素或者下三角元素就够了,使得对称元素共享同一存储空间。
二、对称矩阵的压缩存储
这里主要讲只存储下三角区域中的元素,包括对焦线在内总共需要
n(n+1)2
个存储空间,如下图所示:
任给
aij
元素,当
i≥j
时,从第
1
行到第
address(aij)=address(a11)+(j(j−1)2+i−1)e
由于以上两个公式类似,可以合并如下公式:
address(aij)=address(a11)+(I(I−1)2+J−1)e
其中 I=max(i,j),J=min(i,j)
以上就是对称矩阵的压缩存储介绍,写得不好,多指教。