comment transposer une matrice 2D en place?Comment transposer un tableau multidimensionnel en place
Répondre
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;
}
}
AVERTISSEMENT! Ceci n'est correct que pour les tableaux carrés. Voir le lien Wikipedia de @ dlb ci-dessous pour une implémentation matricielle non carrée. – Mayank
Vous n'avez pas spécifié une langue, mais en général, ce que vous faites est:
let a be your array.
for each i,j with i<j switch a[i,j] with a[j,i]
Pour obtenir la transposition d'une matrice carrée, nous devons tenir compte des éléments ci-dessus la diagonale principale ou au-dessous et échanger chacun avec sa réflexion sur la diagonale principale:
for i->0 to N-1
for j->i+1 to N-1
swap matrix[i][j] with matrix[j][i]
Pourquoi prendre la peine? Il suffit d'échanger des indices dans n'importe quelle déclaration d'accès.
Il y a une sérieuse pénalité de performance pour accéder aux tableaux 2D dans le «mauvais» ordre - il est souvent préférable de payer le prix d'une transposition pour bénéficier des avantages de l'accès mémoire contigu (foulée unitaire). –
Wikipédia a un article Transposition matricielle en place. L'article couvre les matrices non carrées.
Cela semble bien fonctionner:
function transpose(a)
{
return Object.keys(a[0]).map(function (c) { return a.map(function (r) { return r[c]; }); });
}
en 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];
}
}
Le résultat est ValueAux
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
est la taille de votre tableau)
- 1. place plusieurs champs similaires dans un tableau multidimensionnel - php mysql
- 2. Comment diviser un tableau multidimensionnel en PHP?
- 3. Comment lister un tableau multidimensionnel en php?
- 4. Comment trier un tableau multidimensionnel en PHP?
- 5. Comment gérer un tableau multidimensionnel?
- 6. tableau multidimensionnel en php
- 7. Organiser un tableau multidimensionnel
- 8. Trier un tableau multidimensionnel
- 9. Itère un tableau multidimensionnel en Python
- 10. Manipuler un tableau multidimensionnel en PHP?
- 11. PHP - Convertir un tableau multidimensionnel en chaîne?
- 12. Confusion dans un tableau multidimensionnel en Java
- 13. Tri un tableau multidimensionnel dans
- 14. chaîne convertir en tableau multidimensionnel
- 15. array_slice dans un tableau multidimensionnel?
- 16. Comment valider un tableau multidimensionnel dans Zend?
- 17. matlab: comment tracer un tableau multidimensionnel
- 18. convertir un tableau 1D à tableau multidimensionnel en PHP
- 19. tableau multidimensionnel en C++ hang
- 20. Comment appeler Parallel.ForEach avec un tableau multidimensionnel
- 21. Comment trier un tableau multidimensionnel par valeur?
- 22. Comment transposer un tableau XML avec T-SQL XQuery?
- 23. Tableau multidimensionnel
- 24. tableau multidimensionnel
- 25. tableau multidimensionnel
- 26. En utilisant ProtoBuf-Net, comment (dé) sérialiser un tableau multidimensionnel?
- 27. Comment rechercher un tableau multidimensionnel en utilisant GET
- 28. Comment trier un tableau multidimensionnel en utilisant php?
- 29. Comment faire un tableau multidimensionnel dynamique en ruby?
- 30. Comment changer une valeur dans un tableau multidimensionnel en PHP
carré ou non? cela fait une grande différence – Anycorn
@aaa: Transposer une matrice non-carré en place n'a pas beaucoup de sens. – Jens
Bien que cela dépende de la représentation (par exemple en utilisant un seul tableau de dimensions N * M), cela pourrait être fait. –