【算法】三项式数据结构压缩稀疏矩阵

xiaoxiao2021-02-28  92

  稀疏矩阵最简单的定义就是,一个矩阵中的大部分的元素为0,即可称为“稀疏矩阵”,例如如下: 代码如下

public class ys { public static void main(String[] args) throws IOException { int M,N,num; String strM,strN,number; String tempstr; BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in)); System.out.println("请先输入矩阵A的行M值:"); strM=keyin.readLine(); M=Integer.parseInt(strM); System.out.println("请输入矩阵A的列N值:"); strN=keyin.readLine(); N=Integer.parseInt(strN); System.out.println("请输入数值,定义稀疏矩阵中不为0的个数:"); number=keyin.readLine(); num=Integer.parseInt(number); while(num>=M*N/2) { System.out.println("请确保稀疏矩阵中不为0的个数满足稀疏矩阵的定义:"); number=keyin.readLine(); num=Integer.parseInt(number); } int i,j,tmpRW,tmpNZ,tmpCL; int temp = 1; int Sparse[][]=new int [M][N]; int Compress[][]=new int[num+1][3]; for(i=0;i<M;i++) { for(j=0;j<N;j++) { Sparse[i][j]=0; } } tmpNZ=num; for(i=1;i<tmpNZ+1;i++) { tmpRW=(int)(Math.random()*100); tmpRW=(tmpRW%M); tmpCL=(int)(Math.random()*100); tmpCL=(tmpCL%N); if(Sparse[tmpRW][tmpCL]!=0) tmpNZ++; Sparse[tmpRW][tmpCL]=i; } for(i=0;i<M;i++) { for(j=0;j<N;j++) { System.out.print(Sparse[i][j]+" "); } System.out.println(); } Compress[0][0]=M; Compress[0][1]=N; Compress[0][2]=num; for(i=0;i<M;i++) { for(j=0;j<N;j++) if(Sparse[i][j]!=0) { Compress[temp][0]=i; Compress[temp][1]=j; Compress[temp][2]=Sparse[i][j]; temp++; } } System.out.println("[矩阵压缩后内容为]\n"); for(i=0;i<num+1;i++) { for(j=0;j<3;j++) { System.out.print(Compress[i][j]+" "); System.out.print('\t'); } System.out.println(); } } }
转载请注明原文地址: https://www.6miu.com/read-40424.html

最新回复(0)