Java稀疏数组

 

public class Holle {
    public static void main(String[] args) {
        //创建数组
        int [][] array = new int[11][11];
        array[1][2] = 1;
        array[2][3] = 2;
        //输出原始的数组
        System.out.println("输出原始数组");
        for (int [] ints: array){
            for (int anint: ints){
                System.out.print(anint+" ");
            }
            System.out.println();
        }
        //转换为稀疏数组
        //获取有效值的个数
        int sum=0;
        for (int i=0; i< array.length; i++){
            for(int j=0; j< array[i].length; j++){
                if(array[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("有效值的个数为:"+sum);

        //创建一个稀疏数组
        int[][] array1 = new int[sum+1][3];
        array1[0][0]= array.length;
        array1[0][1]= 11;
        array1[0][2]= sum;

        //遍历二维数组,将非零的值存放到稀疏数组中
        int count=0;
        for (int i=0; i< array.length; i++){
            for (int j=0; j<array[i].length; j++){
                if (array[i][j]!=0){
                    count++;
                    array1[count][0]=i;
                    array1[count][1]=j;
                    array1[count][2]=array[i][j];
                }
            }
        }
        System.out.println("输出稀疏数组");
        for (int [] ints: array1){
            for (int anint: ints){
                System.out.print(anint+"\t");
            }
            System.out.println();
        }
        System.out.println("还原数组");
        int[][] array2 = new int[array1[0][0]][array1[0][1]];
        for (int i=1; i< array1.length; i++){
            array2[array1[i][0]][array1[i][1]]=array1[i][2];
        }
        for (int [] ints: array2){
            for (int anint: ints){
                System.out.print(anint+" ");
            }
            System.out.println();
        }
    }
}

 

posted @ 2022-06-25 17:39  贝勒爷ma  阅读(25)  评论(0)    收藏  举报