当先锋百科网

首页 1 2 3 4 5 6 7

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类可以正确地将三元组形式的稀疏矩阵转换为原始矩阵的形式,并且避免了大量的空间浪费。