408-数据结构-数组-矩阵存储以及压缩存储

本文探讨了数组的存储方式,包括一维和多维数组的内存布局,重点讲解了二维数组的行优先和列优先存储。针对矩阵存储,介绍了对称矩阵的压缩存储方法,分析了行优先和列优先存储下对角线元素的偏移量计算,以节省空间。此外,还讨论了如何根据矩阵特性进行空间优化。
摘要由CSDN通过智能技术生成

数组

就是每一个元素存储在内存上且按照顺序连续存放。

多维数组可以按照不同的优先级进行存放。
以二维数组为例,可以按行优先进行存放,也可以按照列优先进行存放。
行优先,即先让一行连续存放,存放完一行,再存放下一行。列优先同样道理。
无论是多少维数组都可以写成:始址+偏移量的形式。所以无论多少维逻辑上都可以看为一维数组。

矩阵存储

矩阵可以很自然使用二维数组进行存储。

矩阵压缩存储

由于矩阵中可能有许多元素为0元素或者相同元素,如果重复存储浪费空间,可进行优化。

对称矩阵

每一个元素符合
a i j = a j i a_{ij} = a_{ji} aij=aji
称为对称矩阵,所以只需要存放上三角或者下三角即可,那么就不需要开辟二维数组,只需要开辟一位数组即可,只需要构建一个合理的映射关系。

以存放下三角为例:
如果按照行优先进行存放,那么对于aij元素前i-1行有 i*(i-1)/2个元素,同一行前面有j-1个元素,所以还需要加j-1.
如果按照列优先进行存放,对于aij,前面j-1列有(n, n-1, n-2, … , n-j+1)前面有(2n+1-j) * (j-1)/2,还需要加上同一列千前面几个(i-j)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值