1.对于对称矩阵、上三角矩阵、下三角矩阵、带状矩阵等矩阵,可以用一维数组来存储有值的部分,分为行优先和列优先。
2.稀疏矩阵的表示
1) 三元组表示
template class<T>
struct Trituple{
int row,col;
T value;
}
3.稀疏矩阵的快速转置算法
实现统计好转置后各行非零元素在转置矩阵的三元组表中应存放的位置,形成两个辅助数组rowsize和rowstart,然后对稀疏矩阵的三元组表进行一趟扫描,依次检测各三元组。(而不是像转置普通矩阵那样写俩for循环)
与直接交换三元组的行列的那种方法相比的优势:那种方法在交换完之后还要进行重新排序。而这种方法可以借助两个辅助数组达到排序的效果。
4.稀疏矩阵相加的算法
同样也不是俩for循环,而是比较各自的index。如果相同就相加,然后继续,如果a的index<b的index,那么把当前的a赋值到相加后的结果中,取a的下一个继续比较。
5.稀疏矩阵相乘的算法
当顺序取到A[i][k]时,根据列号k,去找b.smArray中所有行号为k的三元组。为了最快速度找到,也要用到上述两个辅助数组。
6.稀疏矩阵的正交链表表示
转载于:https://blog.51cto.com/hyman1994/1663647