数据结构(稀疏矩阵)

稀疏矩阵是一种针对含有大量零元素的矩阵的高效存储策略。当非零元素数量远小于总元素数且分布无规律时,使用三元组(行,列,值)来存储非零元素,可以大大减少内存需求。例如,一个二维矩阵可由(0,2,5),(0,3,8),(1,0,6),(2,1,5),(2,4,-5)这样的三元组表示,这些信息可以组织成顺序表或链表。通过定义结构体`triple`来封装每个三元组的信息,实现更紧凑的数据结构。
摘要由CSDN通过智能技术生成

稀疏矩阵只能说是一种思想方法或者小技巧对复杂度进行简化,所以本文我们简要讲述一下方法产生背景以及使用方法。

稀疏矩阵诞生的原因(解决的问题)

我们往往会使用多维数组进行矩阵的存取,但是在现实应用中,我们常会遇到矩阵中的非零元素个数远远小于矩阵元素总数。并且非0元素的位置往往是没有规律的,这时,我们就应该考虑使用稀疏矩阵。

矩阵中的非零元素个数远远小于矩阵元素总数,并且非零元素的分布没有规律。

稀疏矩阵基本格式

稀疏矩阵存储的直观方法是只存储其中的非零元素和非零元素所在的位置。每个非零元素aij可以用一个三元组来表示:(i,j, aij), 然后将此三元组按照一定的次序排列,如先按照行序再按照列序排列。前面两个位置用来存放第几行第几列,第三个位置用来存放对应数值是多少。

即:  (行,列,元素数值)

举个例子:一个二维矩阵可以用一组三元组(0,2,5),(0,3,8),(1,0,6),(2,1,5),(2,4,-5)表示。

可以首先定义一个结构体来表示三元组:

struct triple
{   int row,col;
  int data;
};

将三元组作为elemType放在顺序表或者链表中。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛哥带你学代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值