public class SparseArray {
public static void main(String[] args) {
// 1.创建一个二维数组
int chessArr1[][] = new int[11][11];
chessArr1[1][2] = 1;
chessArr1[2][3] = 2;
chessArr1[4][5] = 2;
// 2.输出原始的二维数组
for(int[] row : chessArr1){
for(int data : row) {
System.out.printf("%d\t",data);
}
}System.out.println();
// 3.遍历当前创建的二维数组,然后再获得有效数据的个数sum
// 先定一个一个变量用于保存有效数据
int sum = 0;
for (int i = 0; i < chessArr1.length ; i++) {
for (int j = 0; j < chessArr1[i].length; j++) {
if (chessArr1[i][j] != 0){
sum++;
}
}
}
System.out.println("sum:"+sum);
// 4.根据的到的sum可以推出稀疏数组
int sparseArr[][] = new int[sum+1][3];
sparseArr[0][0] = chessArr1.length;
sparseArr[0][1] = chessArr1.length;
sparseArr[0][2] = sum;
// 5.然后把原有的值赋值到稀疏数组中保存
int count = 0; // 用于记录是第几个非零数据
for (int i = 0; i < chessArr1.length ; i++) {
for (int j = 0; j < chessArr1[i].length; j++) {
if (chessArr1[i][j] != 0){
count++;
sparseArr[count][0] = i;
sparseArr[count][1] = j;
sparseArr[count][2] = chessArr1[i][j];
}
}
}
// 6.输出稀疏数组
System.out.println();
for (int i = 0; i < sparseArr.length ; i++) {
System.out.printf("%d\t%d\t%d\t",sparseArr[i][0],sparseArr[i][1],sparseArr[i][2]);
System.out.println();
}
// 7.将稀疏数组恢复成为原始的二维数组
int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
for (int i = 1; i < sparseArr.length; i++) {
chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
}
System.out.println();
// 输出还原的二维数组
for(int[] row : chessArr2){
for(int data : row) {
System.out.printf("%d\t",data);
}
System.out.println();
}
}
}
二维数组转为稀疏数组以及稀疏数组转为二维数组
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。