Sparsearray稀疏数组的使用方法

  介绍

这篇文章主要讲解了Sparsearray稀疏数组的使用方法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

今天复习下稀疏数组相关思想。

问题引入:编写的五子棋程序中,有存盘退出和续上盘的功能。

 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稀疏数组的使用方法有进一步的了解,如果还想学习更多内容,欢迎关注行业资讯频道。

Sparsearray稀疏数组的使用方法