📄 复件 快速矩阵转置法及其实现.cpp
字号:
#include"stdio.h"
#define MAXSIZE 12500
typedef struct {
int i,j;
char e;
}Triple;
typedef struct{
Triple data[MAXSIZE];
int mu,nu,tu;
}TSMatrix;
int fasttransposeSMatrix(TSMatrix M,TSMatrix &T)
{
int col,t,copt[50],p,q,num[10];
T.mu=M.nu;T.nu=M.nu;T.tu=M.tu;
if(T.nu)
{
for(col=1;col<=M.nu;col++)num[col]=0;
for(t=1;t<=M.tu;t++)++num[M.data[t].j];
copt[1]=1;
for(col=2;col<=M.nu;col++)copt[col]=copt[col-1]+num[col-1];
for(p=1;p<=M.tu;p++)
{
col=M.data[p].j;q=copt[col];
T.data[q].i=M.data[p].j;T.data[q].j=M.data[p].i;
T.data[q].e=M.data[p].e;++copt[col];
}
}
return 0;
}
void main()
{
int k,l,n;
TSMatrix t,m;
t.mu=4;t.nu=5;t.tu=5;
t.data[1].e=4;
t.data[1].i=1;
t.data[1].j=2;
t.data[2].e=3;
t.data[2].i=1;
t.data[2].j=4;
t.data[3].e=-7;
t.data[3].i=2;
t.data[3].j=5;
t.data[4].e=2;
t.data[4].i=3;
t.data[4].j=1;
t.data[5].e=5;
t.data[5].i=4;
t.data[5].j=3;
fasttransposeSMatrix(t,m);
for(k=1;k<=5;k++)
{
for(l=1;l<=4;l++)
{
for(n=1;n<=m.tu;n++)
if(m.data[n].i==k&&m.data[n].j==l)break;
if(n<=m.tu)printf("%-5d",m.data[n].e);
else printf("%-5d",0);
}
putchar('\n');
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -