数组优秀讲义.pptVIP

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数组优秀讲义

数组 数据元素可为结构类型的线性表 数组 几乎所有的高级程序设计语言中都将数组类型作为固有类型,在此我们以抽象数据类型的形式来讨论其定义和实现 数组的ADT定义 数组的ADT定义 n维数组中含有 个数据元素,每个元素受到n个关系的约束,且这n个关系都是线性关系。当n=1时,n维数组就退化为定长的线性表。反之,n维数组也可以看成是线性表的推广 数组中的每个元素都对应于一组下标(j1,…,jk),每个下表的取值范围是0 ji bi-1, bi称为第i维的长度 数组一旦被定义,它的维数和维界就不再改变 数组结构操作 初始化、销毁、元素的存取和修改 不过,数组多用于静态数据处理,一般不作插入和删除操作 数组的顺序表示 数组通常采用顺序存储方式来实现 n维数组的数据元素的存储问题 数组一旦定义了维数和各维长度,便可为其分配存储空间 只要给出一组下标便可求得相应元素的存储位置 必须约定存放次序 因为存储单元是一维的,而数组是多维的 存储方案 以行序为主序,如C, Pascal, Basic等语言采用 以列序为主序,如Fortran语言采用 次序约定 以行序为主序 以列序为主序 数据元素的存储问题 一维数组为例 如 int A[b1], 共占用b1个整型存储单元 给定下标值i,求对应元素的存储位置 Loc(i) = Loc(0) + i * L 数据元素的存储问题 二维数组为例 如 int A[b1,b2],共占用b1*b2个整型存储单元 如 行序为主序的存储方式(图a) 给定下标值i, j,求对应元素的存储位置 Loc(i, j) = Loc(0, 0) + (b2 * i + j) * L 数据元素的存储问题 n维数组为例 如 int A[b1,b2 ,…,bn],共占用b1*b2 *…*bn个整型存储单元 行序为主序的存储方式 给定下标值j1, j2,…, jn , 求对应元素的存储位置 Loc(j1, j2,…, jn) = Loc(0, 0,…,0) + L * (b2* …..*bn* j1 + b3* …*bn* j2 + … … bn* jn-1 + jn ) 考虑3维数组的情形[?] 矩阵 通常使用二维数组来存储矩阵元素 矩阵的常见操作 转置、相乘等 矩阵的压缩存储 特殊矩阵 值相同的元素或零元素在矩阵中的分布有规律 如对称矩阵,三角矩阵等 稀疏矩阵 值相同的元素或零元素在矩阵中的分布无规律,且 非零元素个数/矩阵所有元素个数 = 0.05 矩阵的压缩存储 多个值相同的元素只分配一个存储空间 只存储非零元素 特殊矩阵的压缩存储 n阶对称矩阵 矩阵中的元素满足性质: aij = aji 对称矩阵压缩存储 为每一对对称元素分配一个存储空间,这样可将n*n个元素压缩存储到n*(n+1)/2个存储空间中 可选择存储其上三角(包括对角线)中的元素或其下三角(包括对角线)中的元素 特殊矩阵的压缩存储 讨论以行序为主序的下三角矩阵的存储 若不采用压缩存储,矩阵需用二维数组A[n][n]存储 若采用压缩存储,可采用一维数组sa[n*(n+1)/2]存储 元素sa[k]和矩阵元素aij之间有如下对应关系 i(i-1)/2 + j – 1 当 i = j k = j(j-1)/2 + i – 1 当 i j 特殊矩阵的压缩存储 如3*3对称矩阵 未压缩时,用二维数组存放,占用9个单元 压缩存放时,用一维数组存放,只需6个单元 如a32存放在sa[4]中 特殊矩阵的压缩存储 三角矩阵 下(上)三角矩阵是指矩阵的上(下)三角(不包括对角线)中的元均为常数c或零的n阶矩阵 三角矩阵的压缩存储 只存储下(上)三角中的元素,再加一个存储常数c的空间即可 特殊矩阵的压缩存储 对角矩阵 所有非零元素都集中在以主对角线为中心的带状区域中 对角矩阵的压缩存储 可按照某原则(或以行为主,或以对角线的顺序)将其压缩到一维数组中 特殊矩阵的压缩存储 小结 特殊矩阵(如对称矩阵、三角矩阵、对角矩阵等)中,非零元素的分布有明显的规律,因此我们可以将其压缩存储到一维数组中,并找到每个非零元素在一维数组中的对应关系 稀疏矩阵的压缩存储 稀疏矩阵 值相同的元素或零元素在矩阵中的分布无规律,且 非零元素个数/矩阵所有元素个数 = 0.05 原理 只需存储矩阵中的非零元素所在的行号、列号和值

文档评论(0)

taotao0b + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档