前言
用java实现二维数据和稀疏数组之间的转换
1. 需求和思路分析
1.1 以二维数组的格式模拟棋盘、地图等类似的二维结构为基础,与稀疏数组之间进行转化。
1.2 思路分析
2.代码实现和展示
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
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();
}
}
}
|
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
原始二维数组为:
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 二维数组和稀疏数组转换内容请搜索快网idc以前的文章或继续浏览下面的相关文章希望大家以后多多支持快网idc!
原文链接:https://blog.csdn.net/weixin_45063703/article/details/118255333
相关文章
猜你喜欢
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
如何在亚马逊云主机上部署WordPress等主流CMS系统?
2025-05-27 53 -
Windows 11自带杀毒软件太灵敏了,可以这样暂时关闭或永久禁用它
2025-05-27 90 -
2025-05-25 12
-
2025-06-04 66
-
2025-05-29 48
热门评论