3-第二章 基本数据结构及其运算-数组.ppt

 3-第二章 基本数据结构及其运算-数组.ppt

  1. 1、本文档共48页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
方法一:按M的列序转置 即按mb中三元组次序依次在ma中找到相应的三元组进行转置。为找到M中每一列所有非零元素,需对其三元组表ma从第一行起扫描一遍。由于ma中以M行序为主序,所以由此得到的恰是mb中应有的顺序。 第二章 基本数据结构 6 7 8 0 1 12 0 2 9 2 0 -3 2 5 14 3 2 24 4 1 18 5 0 15 5 3 -7 i j v 0 1 2 3 4 5 6 7 ma 7 6 8 0 2 -3 0 5 15 1 0 12 1 4 18 2 0 9 2 3 24 3 5 -7 5 2 14 k q q q q q q q q k k k k q q q q q q q q 第二章 基本数据结构 p=0 p=1 k=0; for (p=0;pn;n++) for (q=0;qt;q++) { if(ma[q].j==p) { mb[k].i=ma[q].j;mb[k].j=ma[q].i;mb[k].v=ma[q].v;k=k+1; }} //按列扫描 i j v 0 1 2 3 4 5 6 7 mb 方法二:快速转置 即按ma中三元组次序转置,转置结果放入mb中恰当位置。此法关键是要预先确定M中每一列第一个非零元在mb中位置,为确定这些位置,转置前应先求得M的每一列中非零元个数 实现:增加2个辅助向量: ① 记录每列非0元素个数,用NUM2(col)表示; ② 记录稀疏矩阵中每列第一个非0元素在mb中的行号,用cpot(col)表示 第二章 基本数据结构 显然有: cpot[0]=0; cpot[col]=cpot[col-1]+num2[col-1]; 0 2 4 6 7 7 8 col num2[col] cpot[col] 0 2 1 2 2 2 3 1 4 0 5 1 6 0 第二章 基本数据结构 7 6 8 0 2 -3 0 5 15 1 0 12 1 4 18 2 0 9 2 3 24 3 5 -7 5 2 14 i j v 0 1 2 3 4 5 6 7 mb 第二章 基本数据结构 6 7 8 0 1 12 0 2 9 2 0 -3 2 5 14 3 2 24 4 1 18 5 0 15 5 3 -7 i j v 0 1 2 3 4 5 6 7 7 6 8 0 2 -3 0 5 15 1 0 12 1 4 18 2 0 9 2 3 24 3 5 -7 5 2 14 0 1 2 3 4 5 6 7 ma mb 0 2 4 6 7 7 8 col num2[col] cpot[col] 0 2 1 2 2 2 3 1 4 0 5 1 6 0 i j v q q q q q q q q 3 5 1 8 4 6 2 稀疏矩阵的基本运算——矩阵加法 问题描述:设mc行nc列稀疏矩阵C有tc个非零元素,已用三元组表表示;mb行nb列系数矩阵B有tb个非零元素,也已用三元组表表示。求矩阵A=B+C。 解决思路: ?判断矩阵相加的合理性。 ?为矩阵A申请三元组表空间,ta=tb+tc ?同时依次扫描B、C的三元组表。 对于行号相同的两个矩阵的非零元素: 若:列号也相同,则相加。若相加后值为非零,则将行、列、结果保存到A的三元组表空间。 若:列号不同,则将列号小的非零元素信息复制到A的三元组空间。 在此过程中,若一个矩阵的本行所有非零元素处理完后,则将另一矩阵的本行剩余非零元素的信息也复制到A的三元组空间。 第二章 基本数据结构 第二章 基本数据结构 0 0 3.2 2 1 3.8 2 3

文档评论(0)

canjiadyy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档