稀疏矩阵只能说是一种思想方法或者小技巧对复杂度进行简化,所以本文我们简要讲述一下方法产生背景以及使用方法。
稀疏矩阵诞生的原因(解决的问题)
我们往往会使用多维数组进行矩阵的存取,但是在现实应用中,我们常会遇到矩阵中的非零元素个数远远小于矩阵元素总数。并且非0元素的位置往往是没有规律的,这时,我们就应该考虑使用稀疏矩阵。
矩阵中的非零元素个数远远小于矩阵元素总数,并且非零元素的分布没有规律。
稀疏矩阵基本格式
稀疏矩阵存储的直观方法是只存储其中的非零元素和非零元素所在的位置。每个非零元素aij可以用一个三元组来表示:(i,j, aij), 然后将此三元组按照一定的次序排列,如先按照行序再按照列序排列。前面两个位置用来存放第几行第几列,第三个位置用来存放对应数值是多少。
即: (行,列,元素数值)
举个例子:一个二维矩阵可以用一组三元组(0,2,5),(0,3,8),(1,0,6),(2,1,5),(2,4,-5)表示。
可以首先定义一个结构体来表示三元组:
struct triple
{ int row,col;
int data;
};
将三元组作为elemType放在顺序表或者链表中。