矩阵A转置为
矩阵B,采用优化方法实现,对A矩阵,采用行指针*Arow访问同一行不同列元素,对矩阵B,采用列指针*Bptr访问相同列不同行元素。
代码实现
void transpose(int a[3][4],int b[4][3]);
void transpose(int a[3][4],int b[4][3])
{
int i,j;
int *Arow;
int *Bptr;
for(i=0;i<3;i++)
{
Arow=&a[i][0];
Bptr=&b[0][i];
for(j=0;j<4;j++)
{
*Bptr=Arow[j];
Bptr+=3;
}
}
}
void main()
{
int a[3][4],b[4][3];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
a[i][j]=i+j+1;
transpose(a,b);
}
运行结果
一般方法
void transpose(int a[3][4],int b[4][3]);
void transpose(int a[3][4],int b[4][3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
b[j][i]=a[i][j];
}
void main()
{
int a[3][4],b[4][3];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
a[i][j]=i+j+3+4;
transpose(a,b);
}