提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
从今天开始学习数据结构和算法 以后尽量每天都会记录下自己的学习过程
一、二维数组和稀疏数组是什么?
引用大佬描述:
原文链接:https://blog.csdn.net/weixin_44009447/article/details/118311163
二、转换过程
2.代码如下
/**
* author:秋雨
* time:2022/4/1821:16
**/
public class Demo {
public static void main(String[] args) {
// 创建一个二维数组 11*11
// 0表示没有妻子。1表示白 2表示黑
int[][] chessArr = new int[11][11];
chessArr[1][2] = 1;
chessArr[2][4] = 2;
// 输出
for (int[] row : chessArr) {
for (int data : row) {
// 此处利用C语言输出方式
System.out.printf("%d\t", data);
}
System.out.println();
}
//将二维数组转稀疏数组
// 遍历二维数组 得到非零的个数
int sum = 0 ;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if(chessArr[i][j] != 0){
sum++;
}
}
}
System.out.println(sum);
// 创建稀疏数组
int[][] sparseArr = new int[sum + 1][3];
// 给稀疏数组赋值 第一行为 行数 列数 非零值个数
sparseArr[0][0] = 11;
sparseArr[0][1] = 11;
sparseArr[0][2] = sum;
// 遍历二维数组 将非零值存放到sparseArr中
int count =0 ;// 记录是第几个非零值
for (int i = 0; i < 11 ; i++) {
for (int j = 0; j < 11; j++) {
if (chessArr[i][j] !=0) {
count++;
sparseArr[count][0] = i;
sparseArr[count][1] = j;
sparseArr[count][2] = chessArr[i][j];
}
}
}
// 输出稀疏数组
System.out.println("输出稀疏数组");
for (int i = 0; i < sparseArr.length; i++) {
System.out.println(sparseArr[i][0]+" "+sparseArr[i][1]+" "+sparseArr[i][2]);
}
//将稀疏数组转为二维数组
// 先读取稀疏数组第一行 初始化二位数组
int[][] charesArr2 = new int[sparseArr[0][0]][sparseArr[0][1]];
for (int i = 1; i < sparseArr.length; i++) {
charesArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
}
for (int[] row : chessArr) {
for (int data : row) {
// 此处利用C语言输出方式
System.out.printf("%d\t", data);
}
System.out.println();
}
}
}
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 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 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
2
输出稀疏数组
11 11 2
1 2 1
2 4 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 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 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0
Process finished with exit code 0
总结
提示:学习之前都不知道稀疏数组是个什么东西,学习后了解到原来二维数组和稀疏数组之前可以转换,并省下不少空间