稀疏矩阵相乘

Status MultSMatrix(RLSMatrix M,RLSMatrix N,RLSMatrix &Q){
//求矩阵乘积Q=M*N,采用行逻辑链接存储表示。
if(M.nu!=N.mu)return ERROR;
Q.mu=M.mu;Q.nu=N.nu;Q.tu=0;
if(M.tu*N.tu!=0)
{//Q是非零矩阵
for(arow=1;arow<=M.mu;++arow){
//处理M的每一行
ctemp[]=0;
Q.rpos[arow]=Q.tu+1;
if(arow<M.mu)tp=M.rpos[arow+1];
else{tp=M.tu+1}
for(p=M.rpos[arow];p<tp;++p){
//对当前行中每一个非零元找到对应元在N中的行号
brow=M.data[p].j;
if(brow<N.mu)t=N.rpos[brow+1];
else{t=N.tu+1;}
for(q=N.rpos[brow];q<t;++q){
ccol=N.data[q].j;//乘积元素在Q中的列号
ctemp[ccol]+=M.data[p].e*N.data[q].e;
}
}
for(ccol=1;ccol<=Q.nu;++ccol)//压缩存储改行非零元
if(ctemp[ccol]){
if(++Q.tu>MAXSIZE)return ERROR;
Q.data[Q.tu]=(arow,ccol,ctemp[ccol])}
}
}
return ok;}

时间复杂度为O(M.mu*N.nu+M.tu*N.tu/N.mu)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值