Java实现二维数组和稀疏数组之间的转换
程序员文章站
2024-03-30 22:05:33
前言用java实现二维数据和稀疏数组之间的转换1. 需求和思路分析1.1 以二维数组的格式模拟棋盘、地图等类似的二维结构为基础,与稀疏数组之间进行转化。1.2 思路分析二维数组转化为稀疏数组 遍...
前言
用java实现二维数据和稀疏数组之间的转换
1. 需求和思路分析
1.1 以二维数组的格式模拟棋盘、地图等类似的二维结构为基础,与稀疏数组之间进行转化。
1.2 思路分析
二维数组转化为稀疏数组
- 遍历原始的二维数组,得到有效数据个数 sum
- 根据sum就可以创建稀疏数组sparsearr int[sunm+1][3]
- 将二维数组的有效数据存入到稀疏数组
稀疏数组转为二维数组
- 先读取稀疏数组的第一行,根据第一行的数据,创建原始的二维数组
- 再读取稀疏数组后几行的数据,并赋给原始的二维数组即可。
2.代码实现和展示
2.1 二维数组与稀疏数组之间的转化程序
public class sparsearr { public static void main(string[] args) { // 创建一个原始的二维数组 11 * 11 // 0: 没有棋子;1:黑棋;2:白棋 int[][] chessarr = new int[11][11]; chessarr[1][2] = 1; chessarr[2][3] = 2; chessarr[2][6] = 1; // 打印输出原始二维数组 system.out.print("原始二维数组为:\n"); for(int[] a : chessarr ){ for (int item : a ){ system.out.printf( "%d\t", item ); } system.out.println(); } //将二维数组转换为稀疏数组思路 // 1、遍历二维数组,统计有效数据的个数sum int sum = 0; for(int i=0;i < chessarr.length;i++){ for(int j=0;j < chessarr[0].length;j++){ if(chessarr[i][j] != 0){ sum++; } } } system.out.println("有效数据的个数为:" + sum); //2、建立稀疏数组,行列值 int[][] sparsearr = new int[sum+1][3]; //3、遍历原始二维数组转换为稀疏数组中的数据 sparsearr[0][0] = 11; sparsearr[0][1] = 11; sparsearr[0][2] = sum; int count=1; for(int i=0;i < 11;i++){ for(int j=0;j < 11;j++){ if(chessarr[i][j] != 0){ sparsearr[count][0] = i; sparsearr[count][1] = j; sparsearr[count][2] = chessarr[i][j]; count++; } } } //4 输出稀疏数组 system.out.println("稀疏数组为:"); for (int[] row : sparsearr) { // for (int data : row) { // system.out.printf( "%d\t",data); // } // system.out.println(); // } system.out.printf("%d\t%d\t%d\t\n", row[0],row[1],row[2]); } // 将稀疏数组转化为二维数组 // 1.读取稀疏数组首行数据,建立二维数组 int[][] chessarr2 = new int[sparsearr[0][0]][sparsearr[0][1]]; // 2. 遍历稀疏数组,赋值给二维数组 for (int i=1;i < sparsearr.length;i++) { chessarr2[sparsearr[1][0]][sparsearr[1][1]] = sparsearr[i][2]; } // 3. 打印输出原始的二维数组 system.out.print("原始二维数组为:\n"); for (int[] row : chessarr2) { for (int data : row) { system.out.printf("%d\t", data); } system.out.println(); } } }
2.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 2 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 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 0 0 0 0 0 0 有效数据的个数为:3 稀疏数组为: 11 11 3 1 2 1 2 3 2 2 6 1 原始二维数组为: 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 2 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 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 0 0 0 0 0 0
3. 总结
用java语言实现二者之间的转化,思路很重要,按着思路写代码就会很省事,难的点可能是不知道如何写代码。
注意:printf 和 print 输出的格式不同。
参考视频
尚硅谷java数据结构与java算法(java数据结构与算法)
到此这篇关于java实现二维数组和稀疏数组之间的转换的文章就介绍到这了,更多相关java 二维数组和稀疏数组转换内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
Java实现二维数组和稀疏数组之间的转换
-
java中实现十六进制和十进制之间的转换
-
java中实现十六进制和二进制之间的相互转换
-
NC29 二维数组中的查找2算法 java实现
-
牛客网刷题java之在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。输入这样的一个二维数组和一个整数,判断数组中是否含有该整数
-
System.arraycopy()实现数组之间的复制 博客分类: java基础 System.arraycopy()
-
System.arraycopy()实现数组之间的复制 博客分类: java基础 System.arraycopy()
-
Java中增强for循环在一维数组和二维数组中的使用方法
-
java byte数组与int,long,short,byte的转换实现方法
-
Java中字符串与byte数组之间的相互转换