稀疏二维数组

布满荆棘的人生 2023-10-10 10:59 77阅读 0赞

package com.atguigu.sparsearray;

public class SparseArray {

/**
* @param args
*/
public static void main(String[] args) {
//创建一个原始二维数组,并赋值1表示红色,2表示蓝色,0表示没有颜色
int ChessArr[][] = new int[11][11];
ChessArr[1][2]=1;
ChessArr[2][3]=2;
ChessArr[3][4]=2;
//遍历原始二维数组
System.out.println(“原始的二维数组”);
for (int[] a : ChessArr) {
for (int b : a) {
System.out.printf(“%d\t”,b);
}
System.out.println(“”);
}
//计算原始二维数组里面非0值的个数,并输出
int sum = 0;
for (int[] is : ChessArr) {
for (int i : is) {
if(i!=0){
sum++;
}
}
}
System.out.println(“sum=”+sum);
//创建稀疏数组,并赋值
int SparseArr[][] = new int[sum+1][3];
SparseArr[0][0]=11;
SparseArr[0][1]=11;
SparseArr[0][2]=sum;

int count = 0;
for (int i = 0; i < 11; i++) {
for (int j = 0; j < 11; j++) { //i=1 j=2
if(ChessArr[i][j]!=0){
count++;
SparseArr[count][0] = i;
SparseArr[count][1] = j;
SparseArr[count][2] = ChessArr[i][j];
}

}

}
//遍历稀疏二维数组
for (int[] is : SparseArr) {
for (int i : is) {
System.out.printf(“%d\t”,i);
}
System.out.println();
}
//将稀疏二维数组转化为新的原始二维数组
int ChessArr2[][] = new int[SparseArr[0][0]][SparseArr[0][1]];
System.out.println(“恢复后的二维数组”);
/*for (int i = 0; i < SparseArr[0][0]; i++) {
for (int j = 0; j < SparseArr[0][1]; j++) {
System.out.printf(“%d\t”,ChessArr2[i][j]);
}
System.out.println();
}
*/
for (int i = 1; i < SparseArr.length; i++) {
ChessArr2[SparseArr[i][0]][SparseArr[i][1]] = SparseArr[i][2];
}

//遍历新的原始二位数组
for (int[] a : ChessArr2) {
for (int b : a) {
System.out.printf(“%d\t”,b);
}
System.out.println(“”);
}
}
}

发表评论

表情:
评论列表 (有 0 条评论,77人围观)

还没有评论,来说两句吧...

相关阅读