特殊矩阵的压缩存储

特殊矩阵的压缩存储

数组定义

一维数组视为线性表,二维数组为线性表的线性表

  • 一维数组的存储地址为:(数组首地址a0,L为每个元素的存储单位)
    ai=a0+i*L

  • 二维数组的存储分按行存储和按列存储:(数组首地址a(0,0),L为每个元素的存储单元,h1是行下标最大值,h2是列下标最大值)

    • 按行存储

      ai=a(0,0)+[i*(h1+1)+J] * L

    • 按列存储
      ai=a(0,0)+[j*(h2+1)+i] * L

上面两个例子用简单的话来说就是一维数组用计算机来表示的位置得一个唯一标识。他的规则是怎么样的。一维数组是首地址+当前下标*元素的存储单元(2B),二维数组的是首地址+(行下标 * 行长度+列下标 )*存储单元。就是这样的一种规则。确定每个元素的存储位置。

数组压缩存储

对称矩阵

二维数组呈现出一种对称的形式,例:a(1,2)=a(2,1)的值相等,他们之间如果还是采用二位数组存储就是浪费一半的空间,所以将这个二维数组压缩到一维数组B里去,达到节省空间的目的。B中存放主对角线和下三角元素。

元素aij在数组B中的下标的对应关系:

K=i(i-1)/2+j-1(下三角和主对角线)K=j(j-1)+i-1(上三角)

三角矩阵

分上三角和下三角,矩阵中上三角矩阵的下三角全为0,不存储,只存储上三角和主对角线的元素。下三角相反。

  • 上三角矩阵压缩一维数组B的下标和原上三角的对应关系n为行的个数:

    K=(i-2)(2n-i+2)/2 +(j-i)(上三角区和主对角线元素) K=n(n+1)/2

  • 下三角矩阵压缩一维数组B的下标和原上三角的对应关系n为行的个数:
    K=i(i-1)/2 + j-1(下三角和主对角)K=n(n+1)/2

三对角矩阵

有三条对角线,其余全为o称为三对角矩阵。将三对角按行存储到B中,O不存储。
对应关系:K=2i+j-3

稀疏矩阵

二维矩阵中的有效元素较少的时候,采用,用二维矩阵的行、列、值构成三元组存储。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值