ppt课件-计算机软件技术基础.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ppt课件-计算机软件技术基础

计算机软件技术基础 教 师:曾晓东 电 话E_mail: zengxiaodong@263.net 3.3 数组 一、数组的定义及运算 二、数组的顺序存储结构 三、稀疏矩阵的存储表示 四、稀疏矩阵的转置算法 五、规则矩阵的压缩存储 3.3 数组 一、数组的定义及运算 1、定义 是同类数据的有序集合 是特殊的线性结构,是线性表的推广 每行、列、乃至整个均可看作线性表的组合。 相关概念: (1)行前趋、行后继;(2)列前趋、列后继; (3)行主序、列主序 二、数组的顺序存储结构 采用计算地址方法实现 1、一维数组的顺序存储结构 与顺序表的地址计算相同 二、数组的顺序存储结构 2、二维数组的顺序存储结构 数据元素依次存放在一组地址连续的单元中 用静态数组表示 存储方式有两种方法 (对A m n,设每元素长为S) ⑴行优先: 元素aij 结点地址为 : LOC(aij)=LOC(a11)+((i-1)×n+(j-1))×S ⑵列优先: 元素aij 结点地址为 : LOC(aij)=LOC(a11)+((j-1)×m+(i-1))×S 常用前一种方式。 二、数组的顺序存储结构 3、三维数组的顺序存储结构 各维元素个数为 m1, m2, m3 下标为 i, j, k的数组元素的存储地址: (按页/行/列存放) 三、稀疏矩阵的存储表示 1、定义 非零元素个数远少于矩阵元素个数的矩阵,且非零元素的分布无规律 三、稀疏矩阵的存储表示 2、稀疏矩阵的三元组表示法 存储原则:只存储非零元素的信息,不为零元素分配空间 实现方式: a. 三元组存储法 b. 十字链表 三元组 行号 i 列号 j 值 value 三、稀疏矩阵的存储表示 稀疏矩阵的表示: 将矩阵的所有非零元素以某种次序(行主序或列主序)排列 (行数,列数,非零元素的个数) 三、稀疏矩阵的存储表示 三、稀疏矩阵的存储表示 3、三元组顺序表 定义:使用顺序存储结构表示的三元组表 实现方法 三元组的顺序表 三列的二维数组 类型定义 typedef SparseMatrix{ int Rows, Cols, Terms; /*行/列/非零元素数*/ struct TRIPLE smArray[MaxTerms]; /*三元组表*/ } 四、稀疏矩阵转置算法 1、用三元组表表示的稀疏矩阵及其转置 四、稀疏矩阵转置算法 四、稀疏矩阵转置算法 四、稀疏矩阵转置算法 2、简单算法思想 1)操作 设矩阵列数为 Cols,对矩阵三元组表扫描Cols 次。第 k 次检测列号为 k 的项。 第 k 次扫描找寻所有列号为 k 的项,将其行号变列号、列号变行号,顺次存于转置矩阵三元组表。 2)接口 入口参数:原矩阵a 出口参数: 转置矩阵b 四、稀疏矩阵转置算法 3)算法描述 四、稀疏矩阵转置算法 4)函数实现 void transpose(SparseMatrix *a, SparseMatrix *b){ int col,i,k;k=1;/*转置矩阵的当前结点*/ /*转置矩阵特性的初始化*/ b-rows=a-cols;b-cols=a-rows;b-terms=a-terms; for(col=1;cola-cols;col++){ for(i=1;i=a-terms;i++) if(a-smArray[i].col==col){ b-smArray[k].row=a-smArray[i].col; b-smArray[k].col=a-smArray[i].row; b-smArray[k].value=a-smArray[i].value; k++; } } } 四、稀疏矩阵转置算法 5)效率分析 存储空间 只需col,I,k三个整形辅助存储空间,空间复杂度为O(1) 执行时间 if语句的执行次数为a-cols*a-terms,即矩阵a的列数与结点数之积 对转置矩阵的三元组的赋值共进行了a-terms次 设t=a-terms,n=a-cols,则此算法的时间复杂度为O(n*t) 转置矩阵的三元组数组总计被扫描了n次 四、稀疏矩阵转置算法 3、快速转置算法 1)操作 建立辅助数组 rowSize 和 rowStart,记录矩阵转置后各行非零元素个数和各行元素在转置三元组表中开始存放位置。 扫描矩阵三元组表,根据某项的列号,确定它转置后的行号,查 rowStart 表,按查到的位置直接将该项存入转置三元组表中。 四、稀疏矩阵转置算法 四、稀疏矩阵转置

文档评论(0)

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

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

1亿VIP精品文档

相关文档