特点
1、它可以压缩数据,减少内存空间的使用。
过程
2、记录数组元素的坐标和值。
3、稀疏数组有3列,分别是行、列、值,行数是原数组不同值的数加1;
array[0]记录一组行数和列数,以及不同值的数;
然后每行记录一个值在原数组的行列下标记和自己的值。
实例
publicstaticvoidmain(String[]args){ //创建一个原始的二维数组 //0:没有棋子,1:黑子,2:白子 intchessArr1[][]=newint[11][11]; //下面先固定二维数组的元素,后面可优化~ chessArr1[1][2]=1; chessArr1[2][3]=2; chessArr1[4][5]=2; //输出原始的二维数组: System.out.println("原始的二维数组:"); printArray(chessArr1); //下面将二维数组转化为稀疏数组 //1.先遍历二维数组,得到非0数据的个数 intsum=0; for(inti=0;i<11;i++){ for(intj=0;j<11;j++){ if(chessArr1[i][j]!=0){ sum++; } } } //2.创建对应的稀疏数组 intsparesArr[][]=newint[sum+1][3]; //给稀疏数组赋值 sparesArr[0][0]=11; sparesArr[0][1]=11; sparesArr[0][2]=sum; //遍历二维数组,将非0的值存放在sparesArr中 intcount=0;//count用于记录是第几个非0数据 for(inti=0;i<11;i++){ for(intj=0;j<11;j++){ if(chessArr1[i][j]!=0){ count++; sparesArr[count][0]=i; sparesArr[count][1]=j; sparesArr[count][2]=chessArr1[i][j]; } } } //输出稀疏数组的形式 System.out.println(); System.out.println("得到的稀疏数组为:"); printArray(sparesArr); System.out.println(); //下面将稀疏数组恢复成二维数组 //先读取稀疏数组的第一行元素,根据其数据,创建原始的二维数组 intchessArr2[][]=newint[sparesArr[0][0]][sparesArr[0][1]]; //读取稀疏数组后几行的元素(从第二行开始),并赋值给原始的二维数组即可 for(inti=1;i<sparesArr.length;i++){ chessArr2[sparesArr[i][0]][sparesArr[i][1]]=sparesArr[i][2]; } //输出恢复后的二维数组 System.out.println(); System.out.println("恢复后的二维数组"); printArray(chessArr2); } //打印数组 publicstaticvoidprintArray(int[][]array){ for(inti=0;i<array.length;i++){ for(intj=0;j<array[0].length;j++){ System.out.printf("%d\t",array[i][j]); } System.out.println(); } }
以上就是java稀疏数组的介绍,希望对大家有所帮助。更多Java学习指路:Java基础
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容