Loading

稀疏数组的实现

1 ,创建一个二维数组 赋予初始值

int[][] sparsearr = new int [11][11];
sparsearr[1][2] = 1;
sparsearr[2][2] = 2;
sparsearr[3][2] = 2;
sparsearr[4][2] = 2;

2 根据原始数组 创建稀疏数组
2.1 计算原始数组的有效值个数 num

int num = 0;
for (int[] s1:sparsearr) {
    for (int s2: s1) {
        if (s2 != 0){
            num += 1;
        }
    }
}

2.2 初始化稀疏数组的第0行

int[][] array = new int[num+1][3];
array[0][0] = sparsearr.length;
array[0][1] = sparsearr[0].length ;
array[0][2] = num;

2.3 遍历原数组 存入稀疏数组

int[][] array = new int[num+1][3];
array[0][0] = sparsearr.length;
array[0][1] = sparsearr[0].length ;
array[0][2] = num;
for (int i= 0;i<sparsearr.length-1;i++){
    for (int j =0;j<sparsearr[0].length-1;j++){
        if (sparsearr[i][j] != 0){
            count ++ ;
            array[count][0] = i;
            array[count][1] = j;
            array[count][2] = sparsearr[i][j];
        }
    }
}

根据稀疏数组还原 原数组
1 初始化二维数组 //array 为稀疏数组

2遍历稀疏数组 给初始数组赋值

     for (int j = 0;j<array[0].length;j++){
       init[array[i][0]][array[i][1]] = array[i][2];
        }

}
posted @ 2022-03-13 11:33  冰莫莫  阅读(51)  评论(0编辑  收藏  举报