不适宜常规存储的矩阵:值相同的元素很多且呈某种规律分布;零元素多。
矩阵的压缩存储:为多个相同的非零元素只分配一个存储空间;对零元素不分配空间。
什么样的矩阵能够压缩:一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。
稀疏矩阵:矩阵中非零元素较少(一般小于5%)。
对阵矩阵:
在n×n的矩阵a中,满足如下性质:aij=aji(1<=i,j<=n)
只存储下(或者上)三角(包括组对角线)的数据元素。共占用n×(n+1)/2个元素空间。
可以以行为主序将元素存放在一个一维数组sa[n×(n+1)/2]中。
三角矩阵:
特点:对角线以下(或者以上)的数据元素(不包括对角线)全部为常数c
存储方法:重复元素c共享一个元素存储空间,共占用n*(n+1)/2+1个元素空间
上三角矩阵
k=
(i-1)*(2n-i+2)/2+j-i+1 i<=j
n(n+1)/2+1 i>j
下三角矩阵
k=
i*(i-1)/2+j i<=j
n(n+1)/2+1 i>j
对角矩阵:
特点:
在n*n的方阵中,所有非零元素都集中在以主对角线为中心的带状区域中,区域外的值全为0。常见的有三对角矩阵,五对角矩阵,七对角矩阵等。
稀疏矩阵:
三元组(i,j,aij)
矩阵维数(总行数,总列数)
三元组顺序表又称有序的双下标法。
优点:
非零元素在表中按行序有序存储,一次便于进行依行顺序处理的矩阵运算。
缺点:
不能随机存储。若按行号存取某一行中的非零元素,则需从头开始进行查找。
稀疏矩阵的链式存储结构:十字链表
结点除了(row,col,value)以外,还要有两个域:
right:用于链接同一行中的下一个非零元素;
down:用于链接同一列中的下一个非零元素。