基于java写的稀疏数组

基于java写的稀疏数组

package Array;

//稀疏数组
public class SparseArray {
public static void main(String[] args) {
int chessArr1[][] =new int[11][11];
chessArr1[2][4] =21;
chessArr1[1][5]=24;
chessArr1[4][6]=45;
chessArr1[0][1]=123;

    for (int[] row : chessArr1 ){//遍历数组打印出来
        for (int data:row){
            System.out.printf("%d\t",data);
        }
        System.out.println();
    }

    int sum =0;
    for (int i =0;i<chessArr1.length;i++){//遍历数组打印有效的数字的个数
        for (int y=0;y<chessArr1.length;y++){
            if (chessArr1[i][y]!=0){
                sum++;
            }
        }
    }
    System.out.println(sum);

    int sparseArr[][] =new int[sum+1][3];//根据有效数组的个数创建稀疏数组
    sparseArr[0][0]=chessArr1.length;
    sparseArr[0][1]=chessArr1.length;
    sparseArr[0][2]=sum;

    int count=0;
    for (int i =0;i<chessArr1.length;i++){//遍历数组添加有效数字到稀疏数组
        for (int y=0;y<chessArr1.length;y++){
            if (chessArr1[i][y]!=0){
                count++;
                sparseArr[count][0]=i;
                sparseArr[count][1]=y;
                sparseArr[count][2]=chessArr1[i][y];

            }
        }
    }

    for (int[] row : sparseArr ){//遍历稀疏数组打印出来
        for (int data:row){
            System.out.printf("%d\t",data);
        }
        System.out.println();
    }


    int chessArr2[][] =new int[ sparseArr[0][0]][sparseArr[0][1]];

  for (int i=1;i<sparseArr.length;i++){//恢复稀疏数组到原来的数组

          if (sparseArr[i][2]!=0){
         chessArr2[sparseArr[i][0]][sparseArr[i][1]]=sparseArr[i][2];

          }

  }


    for (int[] row : chessArr2 ){//打印数组看看是否正确
        for (int data:row){
            System.out.printf("%d\t",data);
        }
        System.out.println();
    }






}

}
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值