数据结构之压缩矩阵(三角矩阵,对角矩阵,稀疏式矩阵)

本文探讨了如何优化存储空间以提高效率。对称矩阵只需存储一半数据,通过a[m][n]=a[n][m]推导另一半。对角矩阵保存非零元素,利用二维数组按对角线组织。稀疏矩阵针对大部分元素为零的情况,采用十字链表结构,方便增删操作。这种存储方式在处理大量零元素的矩阵时尤其有效。

1,三角矩阵是对称矩阵的一种,对称矩阵的最大特点就是a[m][n] = a[n][m]

 那既然是这样,我们在内存中,就没有必要把这个矩阵全部保存,只要保存一半就可以了,余下的一半就用a[m][n] = a[n][m],来表示,这样就节省下来一半的内存.那么这个三角矩阵在内存中是怎么存储的呢

 我们看到这个是有规律的,第一行1个元素,第二行2个元素,第N行就用N个元素

那么我们就可以计算出,在内存中的位置是:i*(i-1)/2+j-1

2,对角矩阵(带状矩阵)

在一般的矩阵中,数据全部集中在该矩阵的对角线附近,别的地方的数据全部是零,那么,我们只需要把有数据的元素保存下来,别的就不管了,这样也节省下来不少内存.

 那么怎么保存这个数据,又方便查找和更改呢,答案是用二维数组,每条对角线的数据就是一个数组,这样,这个二维数组只占了24个数据,本来整个矩阵有64个元素,至于怎么保存,大家应该看到规律了,正对角线的坐标x,y相等,以(0,0)开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值