存储方式

行优先存储与列优先存储

$$ \begin{bmatrix} 1&3&5\\4&2&6\\7&8&9 \end{bmatrix} $$

我们都知道,这是一个3行3列的矩阵,但是在计算机内存里存储的时候,是线性的存储,也就是说所有矩阵的元素都被存储到了一行。

如果是行优先存储,那么矩阵a在内存里是这么存储的1,3,5,4,2,6,7,8,9。

如果使用的是列优先存储,那么矩阵a在内存里是这么存储的1,4,7,3,2,8,5,6,9。

压缩存储

对称矩阵

沿对角线元素对称,只存对角线和上三角(或下三角)部分,具体参考下面的三角矩阵

$\begin{bmatrix} a_{1,1} \\ a_{2,1}&a_{2,2} \\\vdots &\vdots&\ddots &\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}$

三角矩阵

上三角区或下三角区中所有元素均为同一常量 c,与对称矩阵类似,需要多存一个常数 c

以下三角为例

$\begin{bmatrix} a_{1,1} \\ a_{2,1}&a_{2,2}&&c \\\vdots &\vdots&\ddots &\\a_{n,1}&a_{n,2}&\cdots&a_{n,n}\end{bmatrix}$

存储在一维数组中:$|a_{1,1}|a_{2,1}|a_{2,2}|\cdots|a_{n,1}|a_{n,2}|\cdots|a_{n,n}|\ c\ |$

三对角矩阵