稀疏矩阵的压缩存储方式,java 字符串压缩与解压算法

  稀疏矩阵的压缩存储方式,java 字符串压缩与解压算法

  00-1010任务需求,思想分析,稀疏矩阵的压缩,稀疏矩阵的解压缩代码实现

  00-1010以棋盘为稀疏矩阵,0表示无棋,1表示黑棋,2表示蓝棋。

  将稀疏矩阵压缩成三元组并存储在文件中,然后编写另一个程序读取文件中的信息,并将压缩后的三元组恢复为原始稀疏矩阵。

  三元组的第一行用于存储原始稀疏矩阵的行数、列数和有效数据,其余行用于存储有效的非零数据。

  

目录

 

  

任务要求

遍历原始稀疏矩阵,得到有效数据数和。根据sum创建一个三元组new int [sum1] [3](即sum1中有三列的二维数组)并将二维数据的有效数据存储到三元组中。

 

  00-1010先读取三元组的第一行,根据第一行的数据创建一个二维数组,然后读取三元组后面的行,并给二维数组赋值。

  稀疏矩阵的00-1010压缩

  包zone . lxy . sparsearray;导入Java . io . file output stream;导入Java . io . io exception;导入Java . io . object output stream;/* *将稀疏矩阵压缩成三元组* */public class Compress { public static void main(string[]args)抛出io异常{//为无棋子创建稀疏矩阵11 * 11//0//为黑子//1为白子int[][]chessar 1=new int[11][11]chessar 1[1][2]=1;chess ar 1[2][3]=2;//输出原稀疏矩阵System.out.println(原稀疏矩阵:);for(int I=0;i 11I){ for(int j=0;j 11j){ system . out . print(chess ar 1[I][j] );} system . out . println();}//压缩存储稀疏矩阵//1。先遍历稀疏矩阵,记录非零元素个数int sum=0;if(chess ar 1[I][j]!=0){ sum;} //2.创建相应的三元组并初始化int[][]sparsearr=new int[sum 1][3];sparseArr[0][0]=11;sparseArr[0][1]=11;sparseArr[0][2]=sum;//3.将稀疏矩阵中非零元素放入三元组,int count=1;sparseArr[count][0]=I;sparseArr[count][1]=j;sparseArr[count][2]=chess ar 1[I][j];数数;//输出生成的三元组System.out.println(获取压缩后的三元组:);for(int I=0;I稀疏r .长度;I){ system . out . printf( %-2d %-2d n ,sparseArr[i][0],sparseArr[i][1],sparseArr[I][2]);//以文件的形式保存三联,压缩文件输出流fos=new file output stream( map . data );object output stream OOS=new object output stream(fos);OOS . writeobject(sparseArr);OOS . close();fos . close();} }//输出结果为原始稀疏矩阵:0000000000000000000,得到压缩后的三元组:11 11 2 1 2 1 2 2 3 2稀疏矩阵的解压缩。

  软件包区域.lxy。稀疏阵列:导入java.io.FileInputStream:导入java。超正析象管异常:导入java.io.ObjectInputStream:/**亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实亚实*/public class decompress { public static void main(string[]args)抛出ioexception,class notfounindexception {//诶诶诶诶诶诶哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟哟文件输入流fis=新建fileinputstream( map。数据’);objectinputstream ois=新的objectinputstream(fis);int[][]稀疏性=(int[])ois。read object();ois。close();fis。close();//菲兰达?菲兰达System.out.println(你好吗");for(int I=0);英语字母表中第九个字母稀疏型.长度(I){系统。出去。printf(%-2d %-2d %-2d n),稀疏[i][0],稀疏[i][1],稀疏[I][2];} //贺盛瑞?贺盛瑞,-你好-你好int row=稀疏[0][0];int col=稀疏[0][1];int[]chessar=新的int[row][col];//朱庇特范思哲范思哲范思哲for(int a=1);分散.长度(a ) { int i=散布[a][0];int j=稀疏[a][1];int val=稀疏[a][2];切萨勒[i][j]=瓦尔;} //贺盛瑞阿阿阿阿阿里阿里阿里阿里阿里阿里阿里阿里阿里阿里阿里阿里阿里阿里阿里阿里里阿里System.out.println(299。在本报告所述期间");for(int[]I 3330 chessar){ for(int item 3330 I){ system。出去。printf(% d,item);}系统。出去。println();} } } }//贺盛瑞?贺盛瑞?贺盛瑞:11 2 1 2 2 3 2299 .在本报告所述期间:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧阿巧Java(Java)是你吗范登韦恩佐范登韦恩佐,绿筠小姐Java(Java)不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不,不是吗我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说,我是说就是它!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: