若一个稀疏矩阵有T个非零元素,则需要T+1行的三元组来表示稀疏矩阵.
一般对于M*N的矩阵来说.只要满足(T+1)*3<=M*N
这个条件那么使用三元组存储可以节省空间.
稀疏矩阵转换三元组算法
package Xishu;
public class XtoS {
public static void main(String args[]) {
int[][] data = { { 0, 0, 0, 0, 0, 0 }, { 0, 3, 0, 0, 0, 0 },
{ 0, 4, 0, 0, 0, 0 }, { 0, 0, 9, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0 } }; // 假设一个5*6矩阵
int comparessdata[][] = new int[10][3];
int index;
int i, j;
index = 0;
// 输出矩阵中所有元素
for (i = 0; i < 5; i++) {
for (j = 0; j < 6; j++) {
System.out.print("" + data[i][j] + "");
}
System.out.println("");
}
for (i = 0; i < 5; i++) {
for (j = 0; j < 6; j++) {
if (data[i][j] != 0) {
index++;
comparessdata[index][0] = i;
comparessdata[index][1] = j;
comparessdata[index][2] = data[i][j];
}
}
}
// 给三元组第0行赋值
comparessdata[0][0] = 5;
comparessdata[0][1] = 6;
comparessdata[0][2] = index;
// 输出三元组
for (i = 0; i < index + 1; i++) {
for (j = 0; j < 3; j++) {
System.out.print("" + comparessdata[i][j] + "");
}
System.out.println("");
}
}
}