首页天道酬勤数据稀疏,js稀疏数组

数据稀疏,js稀疏数组

张世龙 05-12 11:02 85次浏览

相信五子棋大家都玩过吧。 现在,让我们以五子棋为列子谈谈稀疏排列的作用。 那么,你有没有想过五子棋是怎么保存的盘里的? 怎么从磁盘上读取? 我想这是大家会想到二维排列。 确实可以使用二维数组,但会浪费内存资源。 看看稀疏数组能减少多少二维数组内存的浪费。 给你思路的分析图,让你一眼就能看出来。 下图:

代码示例:

package com.gx.SparseArray; /*@*二维数组===(稀疏数组* */publicclasssparsearray (publicstaticvoidmain (string [ ] args ) ) /创建原始二维数组11 (11////) chessArr1[2][3]=2; chessArr1[4][5]=2; //输出原始二维阵列System.out.println (原始二维阵列~~~ ); for(int[]row:chessarr1) /一维数组for ) intdata:row ) system.out.printf('%d\t ',data ); }System.out.println (;//将二维阵列稀疏排列的想法//1,首先遍历二维阵列得到非零个数int sum=0的for(intI=0; i11; I ) for(intj=0; j11; j () if ) chessarr1[I][j]!=0) sum; }//相应的稀疏数组intsparsearr [ ] [ ]=new int [ sum1] [3]; //为稀疏数组分配稀疏arr [0] [0]=11; sparseArr[0][1]=11; sparseArr[0][2]=sum;//遍历二维数组,将非零值存储在sparseArr中的int count=0; //count是记录第几个非0数据的for(intI=0; i11; I ) for(intj=0; j11; j () if ) chessarr1[I][j]!=0) {count; sparseArr[count][0]=i; sparseArr[count][1]=j; sparse arr [ count ] [2]=chessarr1[ I ] [ j ]; }//输出稀疏数组的格式System.out.println (; System.out.println; for(intI=0; isparseArr.length; I ) system.out.printf (% d\t % d\t % d\t\n ',sparseArr[i][0],sparseArr[i][1],sparsearr //例如,上述chessarr2=int[11]//2,可以将原始二维阵列分配给读取稀疏阵列后的几行数据/原始二维阵列intchessarr2[ ] [ ]=new int [ sparse arr [0] //2、读取稀疏阵列的下几行数据(从第2行开始),分配到原始的二维阵列,则为for(intI=1; isparseArr.length; I ) { chessarr2(稀疏arr [ I ] [0] )稀疏arr [ I ] [1]=稀疏arr [ I ] [2]; //恢复后的二维数组System.out.println ('恢复后的二维数组) ); for(int[]row:chessarr2) for ) intdata:row ) system.out.printf('%d\t ',data ); }System.out.println (; }}输出结果:也保存了明显二维数组无用的数组,浪费了内存。

广度优先遍历例题,java多态经典例子