目录
一、特殊矩阵的压缩存储
1.数组的定义
1.1概述
数组是由n个相同类型的数据元索构成的有限序列;
每个数据元素称为一个数组元索;
每个元素在n个线性关系中的序号称为该元素的下标,下标的取值范围称为数组的维界;
下标从0开始计数。
1.2数组与线性表的关系
数组是线性表的推广;
一维数组可视为一个线性表;二维数组可视为其元素也是定长线性表的线性表。
1.3特点
数组一且被定义,其维数和维界就不再改变。
2.数组的存储结构
2.1一个数组
一个数组的所有元素在内存中占用一段连续的存储空间。
2.2多维数组
映射方法:
按行优先:按照一行一行的存储
按列优先:按照一列一列的存储
二、矩阵的压缩存储
1.概述
1.1压缩存储
指为多个值相同的元素只分配一个存储空间,对零元素不分配存储空间。
目的是为了节省存储空间。
1.2特殊矩阵
指具有许多相同矩阵元素或零元素,并且这些相同矩阵元素或零元素的分布有一定规律性的矩阵。
常见的特殊矩阵:
- 对称矩阵
- 上(下)三角矩阵
- 对角矩阵
1.3特殊矩阵的压缩存储方法
找出特殊矩阵中值相同的矩阵元素的分布规律,把那些呈现规律性分布的、值相同的多个矩阵元素压缩存储到一个存储空间中 。
2.特殊矩阵
2.1对称矩阵
概念:
关于左对角线对称的矩阵 。
上三角区:位于对角线上方的区域。
下三角区:位于对角线下方的区域。
2.2三角矩阵
下三角矩阵:
上三角区的所有元素均为同一常量。
存储完下三角区和主对角线上的元素之后,紧接着存储对角线上方的常量一次
元素下标之间的对应关系:
上三角矩阵:
下三角区的所有元素均为同一常量;
只需存储主对角线、上三角区上的元素和下三角区的常量一次。
2.3三对角矩阵
又称为带状矩阵,以角线为中心的3条对角线的区域,其他区域的元素都为零。
三对角矩阵A也可以采用压缩存储,将3条对角线上的元素按行优先方式存放在一维数组B中,且a,存放于B[0]中。
在一维数组B中存放的下标为k=2i+j-3。
2.4稀疏矩阵
矩阵中非零元素的个数t相对矩阵元素的个数s来说非常少,即s>>t的矩阵称为稀疏矩阵。
存储方式: 三元组 :将非零元素及其相应的行和列构成一个三元组(行标,列标,值)。
注意: 稀疏矩阵压缩存储后便失去了随机存取特性。
稀疏矩阵的三元组既可以采用数组存储,也可以采用十字链表法存储。