- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四章 数组 Chapter 4 Array * 数组的定义及其基本操作 数组的存储结构 特殊矩阵的压缩存储 稀疏矩阵的压缩存储 本章内容 一、数组的定义 数组是n(n?1)个相同数据类型的数据元素a0,a1…an-1构成的有限序列,且该有限序列存储在一块地址连续的内存单元中。 一维数组: Loc(ai)=Loc(a0)+i×k (0 ?in) 随机存取结构 4.1 数组的定义及其基本操作 二维数组 Am×n= a0 0 a0 1 … a0 n-1 a1 0 a1 1 … a1 n-1 … … … … am-1 0 am-1 1 … am-1 n-1 Am×n=A=(a0 a1 … am-1) 其中,ai=(ai 0 ai 1 … ai n-1) 数组的特性 数组中的数据元素数目固定; 数组中的数据元素具有相同的数据类型; 数组中的每个数据元素都和一组唯一的下标值对应; 数组是一种随机存储结构,可随机存取数组中的任意数据元素。 二、数组的基本操作 int a,b[2][2]; 随机存。给定一组下标,存一个数据元素到该组下标对应的内存单元中; b[1][1]=5; 随机取。从给定的一组下标所对应的内存单元中取一个数据元素。 a=b[1][1]; 4.2 数组的存储结构 a00 … a01 a0(n-1) 行优先 列优先 通常采用顺序存储结构 以二维数组Amn为例 Loc(aij)=Loc(a00)+(i×n+j)×k Loc(aij)=Loc(a00)+(j×m+i)×k … a10 … a11 a1(n-1) a(m-1)0 … a(m-1)1 a (m-1)(n-1) a00 … a10 a (m-1)0 … a01 … a11 a (m-1) 1 a0(n-1) … a1(n-1) a (m-1)(n-1) 对于二维数组float a[5][4],计算: (1)数组a中的数组元素数目; (2)若数组a的起始地址为2000,数组元素a[3][2]的内存地址。 解:(1) 5×4=20个; (2) Loc(a32)=Loc(a00)+(i×n+j)×k =2000+(3×4+2) ×4 =2056 例题 行优先 4.3 矩阵的压缩存储 讨论: 1. 什么是压缩存储? 若多个数据元素的值都相同,则只分配一个元素值的存储空间,且零元素不占存储空间。 2. 所有二维数组(矩阵)都能压缩吗? 未必,要看矩阵是否具备以上压缩条件。 3. 什么样的矩阵具备以上压缩条件? 一些特殊矩阵,如:对称矩阵,对角矩阵,三角矩阵,稀疏矩阵等。 4. 什么叫稀疏矩阵? 矩阵中非零元素的个数较少(一般小于5%) 一、对称矩阵的压缩存储 在一个n阶方阵A中,若元素满足下述性质: aij=aji 0 ? i,j ? n-1 则称A为对称矩阵。 1 5 1 3 7 5 0 8 0 0 1 8 9 2 6 3 0 2 5 1 7 0 6 1 3 a0 0 a1 0 a 1 1 a2 0 a2 1 a2 2 ……………….. an-1 0 a n-1 1 a n-1 2 …a n-1 n-1 存储时可只存储对称矩阵中上三角或下三角中的元素 K= 设以行序为主,将对称矩阵A存储在一维数组sa[n(n+1)/2]中,则aij与sa[k]的对应关系为(下三角) 当i?j时 当i?j时 对称矩阵的压缩存储 二、三角矩阵的压缩存储 n阶上(下)三角矩阵是指矩阵的下(上)三角(不包括对角线)中的元素均为常数或零的n阶方阵。 设以一维数组sb[n(n+1)/2+1]作为n阶下三角矩阵B的存储结构,则B中任一元素bij和sb[k]之间存在着如下对应关系: 其中,sb[n(n+1)/2]中存放着常数。 1 2 2 2 2 5 0 2 2 2 1 8 9 2 2 3 0 2 5 2 7 0 6 1 3 三、稀疏矩阵的压缩存储 稀疏矩阵:设矩阵A中有s个非零元素,若s远远小于矩阵元素的
文档评论(0)