如何原地转置一个二维矩阵?
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;
}
}
let a be your array.
for each i,j with i<j switch a[i,j] with a[j,i]
for i->0 to N-1
for j->i+1 to N-1
swap matrix[i][j] with matrix[j][i]
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
is the size of your array)
在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中
何必大费周折?只需在任何访问语句中交换索引即可。
这似乎很有效:
function transpose(a)
{
return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}