第5章数组和稀疏矩阵汇总.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 第5章 数组和稀疏矩阵 5.1 数 组 5.1.1 数组的定义   一维数组是n(n1)个相同类型的数据元素a1,a2,…,an构成的有限序列,它本身就是一个线性表。二维数组可以看成是这样的一个定长线性表,它的每个数据元素也是一个定长线性表。   例如,以下的二维数组A以m行n列的矩阵形式表示,它可以看成是一个线性表的线性表:   几乎所有的程序设计语言都把数组类型设定为固有类型,数组一旦被定义,它的维数和每维大小就不再改变,其主要的基本运算是存取元素值和修改元素值。 5.1.2 数组的存储结构   以二维数组为例,在C/C++语言中,由于数组下标从0开始,所以除特别指出外,后面的数组表示均统一为下标从0开始。   二维数组的存储次序有按行优先和按列优先两种方式,按行优先存储的形式如下所示:   假设每个元素占k个存储单元,LOC(a0,0)表示a0,0元素的存储地址,对于元素ai,j,其存储地址为: 按列优先存储的形式如下所示: 对于元素ai,j,其存储地址为:   【例5.1】 对于二维数组A[0..2][0..5],当按行优先存储时,元素A[2][3]是第几个元素;当按列优先存储时,元素A[2][4]是第几个元素。   解:这里m=3,n=6,当按行优先存储时,元素A[2][3]的前面有2行计12个元素,在第2行中前面有3个元素,所以元素A[2][3]是12+3+1=16个元素。   当按列优先存储时,元素A[2][4]的前面有4列计12个元素,在第4列中前面有2个元素,所以元素A[2][4]是12+2+1=15个元素。 5.1.3 数组的应用示例   【例5.2】 设计一个算法,实现一个m×n的整型数组A的转置运算。   解:对于一个m×n的数组Am×n,其转置矩阵是一个n×m的矩阵Bn×m,且B[i][j]=A[j][i],0≤im,0≤jn,对应的算法如下: void TransMat(int A[][MAX], int B[][MAX],int m,int n) { int i,j;   for (i=0;im;i++) for (j=0;jn;j++)   B[j][i]=A[i][j]; } 4.2 特殊矩阵的压缩存储   二维数组也称为矩阵,特殊矩阵是指非零元素或零元素的分布有一定规律的矩阵.   为了节省存储空间,特别是在高阶矩阵的情况下,可以利用特殊矩阵的规律,对它们进行压缩存储。   一个n阶方阵的元素可以分为主对角线、上三角和下三角部分 1. 对称矩阵的压缩存储   若一个n阶方阵A[n][n]的元素满足ai,j=aj,i(0≤i,j≤n-1),则称其为n阶对称矩阵。   由于对称矩阵中的元素关于主对角线对称,因此在存储时可只存储对称矩阵中上三角或下三角中的元素,使得对称的元素共享一个存储空间。这样,就可以将n2个元素压缩存储到n(n+1)/2个元素的空间中。不失一般性,以行序为主序存储其下三角(包括对角线)的元素,如以图所示。 则A中任一元素ai,j和bk之间存在着如下对应关系: 2. 三角矩阵的压缩存储   有些非对称的矩阵也可借用此方法存储,如n阶下(上)三角矩阵。所谓n阶下(上)三角矩阵,是指矩阵的上(下)三角(不包括对角线)中的元素均为常数c或0的n阶方阵。设以一维数组B[0..n(n+1)/2]作为n阶三角矩阵A的存储结构,则A中任一元素ai,j和B中元素bk之间存在着如下对应关系: 上三角矩阵: 下三角矩阵: 其中,B的元素bn(n+1)/2中存放常数c。 3. 对角矩阵的压缩存储   若一个n阶方阵A满足其所有非零元素都集中在以主对角线为中心的带状区域中,则称其为n阶对角矩阵。其主对角线上下方各有b条次对角线,称b为矩阵半带宽 。   对于b=1的三对角矩阵A,只存储其非零元素,并按行优先存储到一维数组B中,将A的非零元素ai,j存储到B的元素bk中:   k=2i+j 5.3 稀 疏 矩 阵   一个阶数较大的矩阵中的非零元素个数s相对于矩阵元素的总个数t十分小时,即st时,称该矩阵为稀疏矩阵。   例如一个100×100的矩阵,若其中只有100个非零元素,就可称其为稀疏矩阵。   稀疏矩阵的压缩存储方法是只存储非零元素,主要有三元组和十字链表两种方法。 5.3.1 稀疏矩阵的三元组表示   由于稀疏矩阵中非零元素的分布没有任何规律,所以在存储非零元素时还必须同时存储该非零元素所对应的行下标和列下标。   这样稀疏矩阵中的每一个非零元素需由一个三元组(i,j,ai,j)唯一确定,稀疏矩阵中的所有非零元素构成三元组线性表。 ((0,2,1),(1,1,2),(2,0,3),(3,3,5),(4,4,6),(5,5,7),(5,

文档评论(0)

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

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

1亿VIP精品文档

相关文档