首页 > 编程知识 正文

初始化一个2行3列的二维数组,二维数组转稀疏数组

时间:2023-05-03 21:31:49 阅读:125595 作者:4871

目录1、稀疏数组概念变换方式例2、稀疏数组与二维数组的相互变换从二维数组向稀疏数组的稀疏数组向二维数组的测试

一、稀疏数组概念

~~~~~~~~~~稀疏序列可以理解为特定序列的压缩。 对于此特定数组,有效数据量远大于无效数据量(大多数为0或相同值),因此可以选择以稀疏数组存储有效数据。

对于变换方式~~~~~~~~~~n行m列二维排列,如果将有效值的个数设为x,则与其对应的稀疏排列是x 1行3列的两位排列. 3列含义分别是行、列、值、第1行的原来的2位的数组的行数、列数、有效值的数量(n、m、x )、以下各行的有效值的行、列、具体的值

例~~~~~~~下图为简单示例,左侧为二维数组,右侧为与其对应的稀疏数组。

二.稀疏阵列与二维阵列相互转换~~~~~~~以下为稀疏阵列与二维阵列相互转换的Java代码的实现

从二维数组传递到稀疏数组/** *的二维数组将转换为相应的稀疏数组,并由* @ paramprearray * @ return */public int [ ] [ tosparsearray ] {/int [ ] pre=0) sum; 全部; } System.out.println (; } int rows=preArray.length; int cols=all/rows; //对应的稀疏阵列int [ ] [ ]稀疏阵列=新int [ sum1] [3]; sparseArray[0][0]=rows; sparseArray[0][1]=cols; sparseArray[0][2]=sum; int flag=0; for(intI=0; i rows; I ) for(intj=0; 日寇; j () if ) prearray[I][j]!=0) { flag; 稀疏阵列[ flag ] [0]=I; 稀疏阵列[ flag ] [1]=j; 稀疏阵列[ flag ] [2]=pre array [ I ] [ j ]; } }返回稀疏阵列; }稀疏数组传递给二维数组/** *,转换为相应的二维数组,* @ paramsparsearray * @ return */public int [ ] toprearray [ int [ ] sparse array ] i sparseArray.length; I({prearr[sparsearray[I][0] ) sparse array [ I ] [1]=sparse array [ I ] [2]; }返回前Arr; }测试@ testpublicvoidtosparsearraytest () int[]prearr=newint[4][5]; preArr[1][0]=1; preArr[2][3]=2; //原始二维数组system.out.println (======================) for(int[]row:prearr ) for ) intdata:row ) system.out.printf('%d ',data ); } System.out.println (; //转换为稀疏阵列并打印int [ ] [ ] sparse arr=this.tosparsearray (pre arr ); system.out.println (与=================对应的稀疏数组============) rows[0]、rows[1]、rows[ //转换为原始二维数组打印int [ ] [ ] pre arr2=this.toprearray (sparse arr ); system.out.println ('=================转换为原始二维阵列==========' ); for(int[]row:prearr2) for ) intdata:row ) system.out.printf('%d ',data ); } System.out.println (; }~~~~~~~~~~~测试结果如下。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。