如何将2D矩阵转置到位?
答案 0 :(得分:7)
维基百科有一篇文章就地矩阵换位。本文涵盖非方形矩阵。
答案 1 :(得分:6)
for (int i=0; i<n; i++) {
for (int j=0; j<i; j++) {
temp = a[i][j];
a[i][j] = a[j][i];
a[j][i] = temp;
}
}
答案 2 :(得分:4)
您尚未指定语言,但通常您所做的是:
let a be your array.
for each i,j with i<j switch a[i,j] with a[j,i]
答案 3 :(得分:2)
要获得方形矩阵的转置,我们需要考虑主对角线上方或下方的元素,并将每个元素与主对角线的反射交换:
for i->0 to N-1
for j->i+1 to N-1
swap matrix[i][j] with matrix[j][i]
答案 4 :(得分:1)
for(i=0;i<N;i++)
for(j=0;j<N;j++)
if(i!=j && j>i)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
(N
是数组的大小)
答案 5 :(得分:0)
为什么要这么麻烦?只需在任何访问语句中交换索引。
答案 6 :(得分:0)
在c#
中string[,] Value;
//fill Value
//create transposed array
ValueAux = new string[Value.GetLength(1),Value.GetLength(0)];
for (i = 0; i < Value.GetLength(0); i++)
{
for (j = 0; j < Value.GetLength(1); j++)
{
Valueaux[j, i] = Value[i, j];
}
}
结果在ValueAux
中答案 7 :(得分:-1)
这似乎运作良好:
function transpose(a)
{
return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}