//创建二维数组,大小为11*11
int chessArr1[][] = new int[11][11];
chessArr1[1][2] = 1;
chessArr1[2][3] = 2;
//输出原始二维数组
System.out.println("原始数组为:");
for (int[] row : chessArr1) {
for (int data: row) {
System.out.print(data+" ");
}
System.out.println();
}
//将二维数组转为稀疏数组
//遍历二维数组,得到有效数组
int count = 0;
for (int[] row : chessArr1) {
for (int data : row) {
if (data != 0){
count++;
}
}
}
//创建对应的稀疏数组
int sparseArr[][] = new int[count + 1][3];
sparseArr[0][0] = 11;
sparseArr[0][1] = 11;
sparseArr[0][2] = count;
//遍历二维数组,将有效数据存放在稀疏数组中
int s = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) {
if (chessArr1[i][j] != 0){
s++;
sparseArr[s][0] = i;
sparseArr[s][1] = j;
sparseArr[s][2] = chessArr1[i][j];
}
}
}
System.out.println("稀疏数组为:");
//输出稀疏数组
for (int[] rows : sparseArr) {
for (int data : rows) {
System.out.print(data + " ");
}
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 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 0
稀疏数组为:
11 11 2
1 2 1
2 3 2
稀疏数组的代码实现(原始数组-稀疏数组;稀疏数组-原始数组)
最新推荐文章于 2026-06-22 22:46:40 发布
本文介绍了一种将二维数组转换为稀疏数组的方法,通过遍历二维数组,记录非零元素的位置和值,创建一个包含非零元素信息的稀疏数组,从而减少存储空间的占用。
&spm=1001.2101.3001.5002&articleId=106166137&d=1&t=3&u=f4d23eaed80d4bf4af9e620ceec0f20a)
235

被折叠的 条评论
为什么被折叠?



