介绍
这篇文章主要讲解了Sparsearray稀疏数组的使用方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
今天复习下稀疏数组相关思想。
问题引入:编写的五子棋程序中,有存盘退出和续上盘的功能。
如上图所示二维数组,大多值是默认值(0),所以记录大量无意义的数据意义不大,此时可以引入稀疏数组。
稀疏数组介绍:当一个数组大部分元素为固定值时,可以使用稀疏数组来保存类似数组;
稀疏数组处理思路:
稀疏数组记录二维数组的行列数以及非默认值数目;
将原始数组中的非默认值以及其坐标记录在稀疏数组中,从而减小文件容量;
公共类SparseArray { 公共静态void main (String [] args) {//创建原始二维数组(0)表示无子,1表示黑子2表示白子) int chessArr1 [] []=new int [11] [11]; chessArr1 [1] [2]=1; chessArr1 [3] [3]=2; chessArr1 [5] [1]=2;//使用的循环遍原始二维数组 System.out.println(“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -原始二维数组- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻;); (int[]行:chessArr1) { (int数据:行){ System.out.printf (“% d \ t"数据); } System.out.println (); }//将二维数组转换为洗漱数组//获取原始二维数组非零数目 int和=0; for (int i=0;我& lt;chessArr1.length;我+ +){ for (int j=0;j & lt;chessArr1.length;j + +) { 如果(chessArr1[我][j] !=0) { 和+ +; } } } System.out.println(“=白芎?+总和);//创建稀疏数组 int sparseArr [] []=new int[总和+ 1][3];//为稀疏数组赋值 sparseArr [0] [0]=chessArr1.length; sparseArr [0] [1]=chessArr1.length; sparseArr[0][2]=总和;//便利原始二维数组,进行存放 int n=0; for (int i=0;我& lt;chessArr1.length;我+ +){ for (int j=0;j & lt;chessArr1.length;j + +) { 如果(chessArr1[我][j] !=0) { n + +; sparseArr [n][0]=我; sparseArr [n] [1]=j; sparseArr [n] [2]=chessArr1[我][j]; } } }//遍历稀疏数组 System.out.println(“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -稀疏数组- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻;); for (int i=0;我& lt;sparseArr.length;我+ +){ System.out.printf (“% d \ t % d \ t % d \ \ n", sparseArr[我][0],sparseArr[我][1],sparseArr[我][2]); }//将稀疏数组还原为原始二维数组 int chessArr2 [] []=new int [sparseArr [0] [0]] [sparseArr [0] [1]]; for (int i=1;我& lt;sparseArr.length;我+ +){ chessArr2 [chessArr2[我][0]][chessArr2[我][1]]=chessArr2[我][2]; } System.out.println(“- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -恢复后的二维数组- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -产生绯闻;); (int[]行:chessArr1) { (int数据:行){ System.out.printf (“% d \ t"数据); } System.out.println (); } } }
输出结果如下:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -原始二维数组- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 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 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 和=3 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -稀疏数组- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 11 11 3 1 2 1 3 3 2 5 1 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -恢复后的二维数组- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 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 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
看完上述内容,是不是对Sparsearray稀疏数组的使用方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。