首页天道酬勤矩阵的运算,稀疏矩阵的稀疏度

矩阵的运算,稀疏矩阵的稀疏度

张世龙 05-12 10:57 22次浏览

稀疏排列1、稀疏排列概要1.1稀疏排列1.2是指具体例1.2.1应用场景1.3实现构想1.3.12从稀疏排列1.3.2稀疏排列的2维排列2、代码实现

一.稀疏序列概述1.1什么是稀疏序列

稀疏数组可以看作是常规数组的压缩。 但是,这里所说的常规数组是指数据量比有效数据量大得多的数组。 如果一个数组的大多数元素都是0,或者是相同值的数组,则可以使用稀疏数组来保存该数组。

1.2具体示例1.2.1应用场景1 .使用稀疏阵列,保留如上所述的二维阵列(棋盘、地图等)

2 .可以将稀疏数组保存在磁盘上,恢复为原始的二维数组数

1.3实现思路1.3.1遍历二维数组稀疏数组原始的二维数组从得到的有效数据个数sumsum到稀疏数组int sparseArr [sum + 1][3]二维数组

1.3.2稀疏阵列通过旋转二维阵列首先读取稀疏阵列的第一行,根据第一行数据创建原始二维阵列。 例如,上述的chessArr2=int [11] [11]只要把读取了稀疏阵列后的几行数据分配给有效数据即可。

二、代码实现包稀疏阵列; publicclasssparsearray { publicstaticvoidmain (字符串[ ] args ) /创建原始二维数组11 * 11 intchessarr1[ ] (=new int [ 11 ] ) chessArr1[2][3]=2; chessArr1[5][4]=2; //原始二维数组System.out.println ('原始二维数组) ); for(int[]row:chessarr1) for ) intdata:row ) system.out.print(data'\t ' ); } System.out.println (; //使二维数组成为稀疏数组//先遍历数组得到0以外个数的int sum=0的for(intI=0; i 11; I ) for(intj=0; j 11; j () if ) chessarr1[I][j]!=0) sum; }//稀疏数组intsparsearr [ ] [ ]=new int [ sum1] [3]; 稀疏arr [0] [0]=11; sparseArr[0][1]=11; sparseArr[0][2]=sum; 遍历sparseArr1,将非零的数存储在sparseArr2中的int count=0; //用于记录第几个非0数据的for(intI=0; i 11; I ) for(intj=0; j 11; j () if ) chessarr1[I][j]!=0) { count; sparseArr[count][0]=i; sparseArr[count][1]=j; sparse arr [ count ] [2]=chessarr1[ I ] [ j ]; }//输出sparseArr System.out.println (; System.out.println (; for(introw[]:sparsearr ) for ) intdata:row ) system.out.print ) data'\t ' ); } System.out.println (; (//稀疏数组为二维数组System.out.println ); System.out.println (; //稀疏数组的第一行int [ ] [ ] chessarr2=new int [ sparse arr [0] [0] [ sparse arr [0] [1]; for(intI=1; i sparseArr.length; I ) { chessarr2(稀疏arr [ I ] [0] )稀疏arr [ I ] [1]=稀疏arr [ I ] [2]; //恢复的二维阵列for(introw[]:chessarr2) for ) intdata:row ) system.out.print ) data'\t ' ); } System.out.println (; }}输出结果:

三元组表示稀疏矩阵,一元稀疏多项式的定义