稀疏矩阵的压缩存储_第1页
稀疏矩阵的压缩存储_第2页
稀疏矩阵的压缩存储_第3页
稀疏矩阵的压缩存储_第4页
稀疏矩阵的压缩存储_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、稀疏矩阵的压缩存储(1) 稀疏矩阵的定义:在矩阵中,多数的元素为0,则称此矩阵为稀疏矩阵三元组类:/定义三元组public class Triple int row;/行号int col;/列号double val;/元素值/对各项数据进行初始化public Triple(int row,int col,double val) this.row=row;this.col=col;this.val=val;public String toString() /输出三元组项return "("+row+","+col+","+val+&qu

2、ot;)"(2)用三元组顺序表实现稀疏矩阵:(3)其中包括了稀疏矩阵的转置: 注:(2)(3)放到了一块import java.util.ArrayList;/稀疏矩阵的定义public class SparseMatrix private int rows;/行private int cols;/列private ArrayList<Triple> terms;/保存三元组/创建public SparseMatrix(int rows,int cols,ArrayList<Triple> t) / TODO Auto-generated constructo

3、r stubthis.rows=rows;this.cols=cols;terms=t;/输出public void output() System.out.println("稀疏矩阵的总行数和总列数分别为:"+rows+","+cols);for(int i=0;i<terms.size();i+) System.out.print(terms.get(i);/转置 返回结果为SparseMatrix型public SparseMatrix transpose() /保存转置后的结果SparseMatrix t=new SparseMatrix(

4、cols,rows,new ArrayList<Triple>();if(terms.size()=0)/空矩阵return t;for(int k=1;k<=cols;k+) /列数作为最外层循环的终止条件 每次扫描原稀疏矩阵的一列for(int j=0;j<terms.size();j+) /都取出来了Triple x=(Triple)terms.get(j);if(x.col=k)/如果x是第k列的元素t.terms.add(new Triple(k,x.row,x.val);/行列互换 值不变/if/forreturn t;测试稀疏矩阵的转置:/稀疏矩阵应用-&

5、gt;转置import java.util.ArrayList;public class Matrix public static void main(String args) ArrayList<Triple> list=new ArrayList<Triple>();/辅助SparseMatrix的构造器list.add(new Triple(1,3,3);list.add(new Triple(1,4,6);list.add(new Triple(2,3,-9);list.add(new Triple(3,1,8);list.add(new Triple(3,3,

6、4);list.add(new Triple(3,5,6);list.add(new Triple(4,2,8);list.add(new Triple(5,3,-3);/稀疏矩阵行列数分别为6,5SparseMatrix s=new SparseMatrix(6,5,list);System.out.println("未转置之前的矩阵为(只输出非零元素):");s.output();System.out.println();System.out.println("转置之后的矩阵为(只输出非零元素):");SparseMatrix ss=s.transp

7、ose();ss.output();上述测试稀疏矩阵的转置程序中定义的矩阵的向量cpot的值以及num的值:col12345numcol11411cpotcol12378(4)1结构定义:ADT SparseMatrix 数据对象:D=aij | i=1,2,m; j=1,2,.,n;aijElemset, m和n分别称为矩阵的行数和列数       数据关系:R=Row,Col         Row=<ai,j , ai,j+1> | 1&

8、lt;=i<=m, 1<=j<=n-1 Col= <ai,j , ai+1,j> | 1<=i<=m-1, 1<=j<=n 基本操作: SparseMatrix(int rows,int cols,ArrayList<Triple> t) 操作结果:创建稀疏矩阵 output() 初始条件:稀疏矩阵已存在 操作结果:打印稀疏矩阵 transpose() 初始条件:稀疏矩阵已存在 操作结果:返回稀疏矩阵的转置ADT SparseMatrix 2稀疏矩阵的存储结构的定义:class SparseMatrix private int

9、rows;/行private int cols;/列private ArrayList<Triple> terms;/保存三元组 三元组Triple:public class Triple int row;/行号int col;/列号double val;/元素值/对各项数据进行初始化public Triple(int row,int col,double val) this.row=row;this.col=col;this.val=val;public String toString() /输出三元组项return "("+row+","+col+","+val+")

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论