如何轉置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. 陣列多維
- 3. 將平面陣列轉換爲多維
- 4. 轉換一個csv到多維陣列
- 5. 通用多維陣列轉換功能
- 6. JSON陣列轉化爲多維數組
- 7. 轉換多維JSON陣列JS變量
- 8. 多維JSON陣列
- 9. 多維PHP陣列
- 10. C++多維陣列
- 11. 將平面陣列轉換爲多維陣列
- 12. 轉換多維相關陣列要被索引陣列
- 13. 轉換二維陣列到多個單個陣列
- 14. MATLAB無複合多維陣列的複共軛轉置
- 15. 旋轉多維矩陣
- 16. JSON陣列到陣列PHP多維
- 17. PHP陣列/多維/動態陣列
- 18. 陣列推到多維陣列
- 19. 平面陣列到多維陣列
- 20. 效率:8陣列vs多維陣列
- 21. PHP多維陣列中陣列
- 22. PHP多維陣列 - 訴諸陣列
- 23. 二維旋轉陣列
- 24. Java - 多維陣列的陣列列表或多維陣列列表的陣列列表?
- 25. Python的轉化一個維陣列成二維陣列
- 26. 將二維單元陣列轉換爲三維陣列
- 27. 將三維陣列轉換爲二維陣列
- 28. 轉換n維numpy的陣列,以2維索引陣列
- 29. 轉換一個維陣列成多維數組
- 30. 轉換多維數組到一維使用值從子陣列
是否正方? 它會產生很大的差異 – Anycorn 2010-04-21 06:34:52
@aaa:移置一個非方形矩陣並沒有多大意義。 – Jens 2010-04-21 07:29:37
儘管取決於表示(例如使用單個N * M維數組),但可以完成。 – 2010-04-21 13:52:28