<返回更多

稀疏矩阵一次定位快速转置算法

2022-04-24    碎冰冰的萝卜坑
加入收藏
//基于矩阵的三元组表示,将矩阵A转置为矩阵B

FastTransposeTSMatrix(TSMatrix A,TSMatrix *B)

{

  int col,t,p,q;

  int num[MAXSIZE],position[MAXSIZE];

  B->len=A.len;B-N=A.m;B->m=A.n;

  if(B->len)

  {

    for(col=1;col<=A.n;col++)

      num[col]=0;

    for(t=1;t<=A.len;t++)

      num[A.data[t].col]++;  //采用数组下表计数法计算每一列的非零元素个数    

    position[1]=1;

    for(col=2;col<=A.n;col++)    //求col列中第一个非零元素在B.data[ ]中的正确位置

      position[col]=position[col-1]+num[col-1];

    for(p=1;p<=A.len;p++)        //将表A从头至尾扫描一次,实现矩阵转置

    {

      col=A.data[p].col;q=position[col];

      B->data[q].row=A.data[p].col;  //1

      B->data[q].col=A.data[p].row;  //2

      B->data[q].e=A.data[p].e;    //3       1、2、3为行列互换,元素赋值

      position[col]++;       //指向下一个列号为col的非零元素在表B中的存放位置

    }

  }

}
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>