




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1二维数组()()()()()()()()()数组A可看成一个线性表A=(a0,a1
,...,ak)
k=m-1或n-1ai
或者是行向量ai=(ai0
,ai1
,...,ai,n-1)0≤i≤m-1aj或者是列向量aj=(a0j
,a1j
,...,am-1,j)0≤j≤n-124.1.2数组的顺序存储结构次序约定以行序为主序以列序为主序
a11a12……..a1n
a21a22……..a2n
am1am2……..amn
….Loc(aij)=Loc(a11)+[(i-1)n+(j-1)]*l
按行序为主序存放amn
……..
am2am1
……….a2n
……..
a22a21a1n
…….a12
a1101n-1m*n-1n
按列序为主序01m-1m*n-1mamn
……..
a2na1n
……….am2
……..
a22a12am1
…….a21
a11
a11
a12
……..
a1n
a21
a22……..
a2n
am1
am2
……..amn
….Loc(aij)=Loc(a11)+[(j-1)m+(i-1)]*l
34.1.3矩阵的压缩存储方法压缩存储为多个值相同的元素只分配一个存储空间对零元素不分配空间4
a11
a12
….
……..a1n
a21
a22
……..…….a2n
an1
an2
……..ann
….a11a21a22a31a32an1ann
…...…...k=01234n(n-1)/2n(n+1)/2-1
按行序为主序:对称矩阵的压缩存储方法5
a11
00
……..0
a21
a22
0
……..0
an1
an2
an3……..ann
….
0Loc(aij)=Loc(a11)+[(+(j-1)]*l
i(i-1)2a11a21a22a31a32an1ann
…...…...k=01234n(n-1)/2n(n+1)/2-1按行序为主序:三角矩阵的压缩存储方法6
a11
a12
0
…………….0
a21
a22
a23
0
……………0
0
0
…an-1,n-2
an-1,n-1
an-1,n
0
0
……an,n-1
ann.
0
a32
a33
a34
0
………0……………Loc(aij)=Loc(a11)+3*(i-1)-1+j-i+1=Loc(a11)+2(i-1)+(j-1)
a11a12a21a22a23ann-1ann
…...…...k=01234n(n-1)/2n(n+1)/2-1按行序为主序:对角矩阵的压缩存储方法7稀疏矩阵定义非零元较零元少,且分布没有一定规律的矩阵压缩存储原则只存矩阵的行列维数和每个非零元的行列下标及其值M由{(1,2,12),(1,3,9),(3,1,-3),(3,6,14),(4,3,24),(5,2,18),(6,1,15),(6,4,-7)}和矩阵维数(6,7)唯一确定8三元组表所需存储单元个数为3(t+1)其中t为非零元个数6
7
8
121213931-3361443245218611564-7maijv012345678ma.data[0]中分别存放矩阵行列维数和非零元个数行列下标非零元值稀疏矩阵的三元组表示法#defineMAX10typedefstruct{inti,j;elemtypev;}node;typedefstruct{intmu,nu,tu;nodedata[MAX];}mat;matma;mu,nu,tu分别存放矩阵行列维数和非零元个数9稀疏矩阵转置算法一算法思想将矩阵A的行数和列数互换=>矩阵B将每个三元组的i和j互换=>矩阵B对三元组表B,按其行序进行排序转置后的三元组B以行(即A的列)为主序排列6
7
8
121213931-3361443245218611564-7ijv01234567810稀疏矩阵转置算法二算法思想按矩阵A的列序进行转置首先寻找矩阵A的第1列的所有三元组,将其(i,j,v)改为(j,i,v)后依次存放到矩阵B的三元组表中然后中寻找矩阵A第2列的所有三元组,将其(i,j,v)改为(j,i,v)后依次存放到矩阵B的三元组表中依次类推转置后的三元组B以行(即A的列)为主序排列11678121213931-3361443245218611564-7ijv012345678ma76813-3161521122518319342446-76314ijv012345678mbkppppppppkkkkppppppppcol=1col=212稀疏矩阵的转置算法分析算法的主要耗费时间是在col和p的两重循环中,所以算法的时间复杂度为O(nu*tu)即和(A的列数与非零元素的个数的乘积)成正比当非零元个数值tu->m*n时(m、n分别表示数组的行列数),算法的时间复杂度成为O(m*n2)上述转置算法只适用于:tu<<m*n的情况13cpot[1]=1;cpot[col]=cpot[col-1]+num[col-1];(2colma[0].j)1357889快速转置:即按ma中三元组次序转置,转置结果放入b中恰当位置此法关键是要预先确定M中每一列第一个非零元在mb中位置,
即转置前应先求得M的每一列中非零元个数实现:设两个数组num[col]:表示矩阵M中第col列中非零元个数cpot[col]:指示M中第col列第一个非零元在mb中位置,显然:colnum[col]cpot[col]1222324150617014678121213931-3361443245218611564-7ijv012345678maijv012345678mbcolnum[col]cpot[col]11223235247158068179076813-3161521122518319342446-76314pppppppp462975315快速转置算法如下:voidfasttrans(matb,mata){intp,q,col,k;intnum[a.n+1],cpot[a.n+1];b.m=a.n;b.n=a.m;b.t=a.t;if(b.t<=0)printf(“a=0”\n);for(col=1;col<=a.n;++col)num[col]=0;for(k=1;k<=a.t;++k)++num[a.data[k].j];cpot[1]=1;for(col=2;col<=a.n;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 前台工作的职业发展路径计划
- 财务资金分配计划
- 通信行业月度个人工作计划
- 《六盘水市东风煤业有限公司水城区东风煤矿(优化重组)矿产资源绿色开发利用方案(三合一)》评审意见
- 攀枝花骏恒矿业有限责任公司炉房箐铁矿矿山地质环境保护与土地复垦方案情况
- 保健植物知识培训课件
- 蛋白还原酸护理教程
- 小学信息技术四年级上册第5课《 精彩游戏-软件的下载》教学设计001
- 2025年铜川货运从业资格证考试模拟考试题库下载
- 2025年新乡货运从业资格证怎么考试
- RRU设计原理与实现
- 工程质量责任制和考核办法
- 《室内展示设计》课件
- 中级消防设施操作员考试题库
- 服装店售后培训课件
- 新旧系统数据迁移方案
- 3D打印与传统工艺美术的融合创新
- 运动损伤预防与处理的案例分析
- 第四次工业革命课件
- nfc果汁加工工艺
- 《中国十大元帅》课件
评论
0/150
提交评论