Java中的稀疏矩陣是指矩陣中大多數元素都為0,只有極少數非零元素的矩陣。對于這類矩陣,傳統的存儲方式會浪費大量的空間。因此,有了一種更加高效的存儲方式,即三元組。
public class SparseMatrix { private int row; // 矩陣的行數 private int col; // 矩陣的列數 private int[][] data; // 矩陣的數據 public SparseMatrix(int row, int col, int[][] arr) { this.row = row; this.col = col; this.data = new int[row][col]; for (int i = 0; i< arr.length; i++) { int r = arr[i][0]; // 非零元素的行 int c = arr[i][1]; // 非零元素的列 data[r][c] = arr[i][2]; // 非零元素的值 } } public void display() { for (int[] row : data) { for (int v : row) { System.out.print(v + "\t"); } System.out.println(); } } public static void main(String[] args) { int[][] arr = {{0, 2, 3}, {1, 1, 4}, {2, 0, 1}, {2, 2, 2}}; SparseMatrix matrix = new SparseMatrix(3, 3, arr); matrix.display(); } }
在上述代碼中,SparseMatrix是稀疏矩陣類,使用二維數組data存儲矩陣中的數據。在構造函數中,通過傳入的三元組數組arr初始化data數組。display方法用于按照矩陣的格式輸出data數組的內容。
下面是待存儲的稀疏矩陣:
0 0 3 0 4 0 1 0 0
將其轉換成三元組形式為:
0 2 3 1 1 4 2 0 1
使用SparseMatrix類可以將這個稀疏矩陣以三元組的形式存儲:
SparseMatrix matrix = new SparseMatrix(3, 3, arr); matrix.display();
輸出結果為:
0 0 3 0 4 0 1 0 2
可以看到,SparseMatrix類可以正確地將三元組形式的稀疏矩陣轉換為原始矩陣的形式,并且避免了大量的空間浪費。