数据结构———特殊矩阵的压缩存储及其推导

Tips:下面是我写数据结构作业遇到的两种特殊矩阵的压缩存储对应关系。

特殊矩阵都是方阵(默认为n阶方阵)

对称矩阵

1.特点:

a[i][j]=a[j][i]

2.结构形式:

数据结构———特殊矩阵的压缩存储及其推导_第1张图片

3.压缩存储过程

因为对称矩阵的特点a[i][j]=a[j][i],整个矩阵以主对角线为分界线,下三角和上三角的数据是一模一样的,所以只需要存储下三角和主对角线的数据即可。可以将数据保存在一个一维压缩数组s[n*(n+1)/2]中。

一维数组下标k和二维数组下标i,j的关系如下:

数据结构———特殊矩阵的压缩存储及其推导_第2张图片

4.推导过程

4.1 一维数组的大小

这个数组就是保存对称矩阵有效数据,所以只需要计算需要保存的数据有多少就行了。
如对称矩阵中有效数据,第一行是1个,第二行是2个,···,第n行有n个,所以一共是n*(n+1)/2个。

4.2 k与i,j的对应关系

Tips:本文数组下标都是从0开始

由图可得,主对角线和下三角区域的坐标都是 i>=j 的,坐标(i,j),i 代表前面已经有 i 行数据了,从0到 i 行一共有 i*(i+1)/2 个数据,然后再加上 j 个,就是矩阵数据中的有效数据对应一维压缩数组的位置了。

剩下的上三角区域怎么办呢?i,j互换即可。

那么一维压缩数组的下标k就可以表示为
数据结构———特殊矩阵的压缩存储及其推导_第3张图片

下三角矩阵

有效数据示意图

数据结构———特殊矩阵的压缩存储及其推导_第4张图片
**

推导过程同对称矩阵

**

你可能感兴趣的:(数据结构)