1. 程式人生 > 其它 >稀疏陣列的實現

稀疏陣列的實現

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];
        }

}