如何转置2D矩阵到位?Howto转置多维阵列
6
A
回答
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
警告!这只适用于方阵。请参阅下面的@ dlb维基百科链接,了解非方形矩阵实现。 – Mayank 2014-04-07 06:04:56
4
您还没有指定一个语言,但通常你做的是:
let a be your array.
for each i,j with i<j switch a[i,j] with a[j,i]
2
为了得到一个方阵,我们需要考虑上面的主对角线或低于它的元素的转置和沿着主对角线互相交换:
for i->0 to N-1
for j->i+1 to N-1
swap matrix[i][j] with matrix[j][i]
0
为什么要麻烦?只需在任何访问声明中交换索引。
+9
以“错误”顺序访问2D数组会出现严重的性能损失 - 通常为了获得连续内存访问(单位跨度)的好处而付出转置费用通常会更好。 – 2010-04-21 07:29:22
7
维基百科有一篇文章就地矩阵换位。文章涵盖了非方形矩阵。
-1
这似乎很好地工作:
在C#function transpose(a)
{
return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}
0
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
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
是你阵列的大小)
相关问题
- 1. 将平面阵列转换为多维
- 2. JSON阵列转化为多维数组
- 3. 多维JSON阵列
- 4. C++多维阵列
- 5. 转换多维相关阵列要被索引阵列
- 6. 旋转多维矩阵
- 7. 阵列推到多维阵列
- 8. PHP多维阵列中阵列
- 9. 效率:8阵列vs多维阵列
- 10. PHP多维阵列 - 诉诸阵列
- 11. JSON阵列到阵列PHP多维
- 12. PHP阵列/多维/动态阵列
- 13. 二维旋转阵列
- 14. 转换一个维阵列成多维数组
- 15. 转换多维数组到一维使用值从子阵列
- 16. 将矩阵转换为1维阵列
- 17. 从多维阵列中PHP
- 18. PHP多维阵列(usort)
- 19. 生成从多维阵列
- 20. 多维导航阵列
- 21. 存储多维阵列
- 22. D3:与更多维阵列
- 23. 从多维阵列中PHP
- 24. PHP多维混合阵列
- 25. 克隆多维阵列
- 26. PHP多维阵列计数
- 27. 多维阵列过滤
- 28. 内爆多维阵列
- 29. Arduino通过多维阵列
- 30. 多维会议阵列
是否正方? 它会产生很大的差异 – Anycorn 2010-04-21 06:34:52
@aaa:移置一个非方形矩阵并没有多大意义。 – Jens 2010-04-21 07:29:37
尽管取决于表示(例如使用单个N * M维数组),但可以完成。 – 2010-04-21 13:52:28