cómo transportar una matriz 2D en su lugar?Cómo transportar una matriz multidimensional en su lugar
Respuesta
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;
}
}
¡ADVERTENCIA! Esto solo es correcto para matrices cuadradas. Consulte el enlace de Wikipedia de @dlb para una implementación de matriz no cuadrada. – Mayank
No ha especificado un idioma, pero en general, lo que se hace es:
let a be your array.
for each i,j with i<j switch a[i,j] with a[j,i]
Para obtener la traspuesta de una matriz cuadrada debemos tener en cuenta los elementos por encima de la diagonal principal o por debajo de ella y intercambie cada uno con su reflejo a lo largo de la diagonal principal:
for i->0 to N-1
for j->i+1 to N-1
swap matrix[i][j] with matrix[j][i]
¿Por qué molestarse? Simplemente intercambie los índices en cualquier declaración de acceso.
Hay una penalización grave en el rendimiento para acceder a arreglos bidimensionales en el orden "incorrecto"; a menudo es mejor pagar el precio de una transposición para obtener los beneficios del acceso contiguo a la memoria (avance de la unidad). –
Wikipedia tenía un artículo Transposición de matrices in situ. El artículo cubre matrices no cuadradas.
Esto parece funcionar bien:
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];
}
}
El resultado está en 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
es el tamaño de su matriz)
- 1. Cómo transportar una matriz en el prólogo
- 2. Numpy: ordenar una matriz multidimensional por una matriz multidimensional
- 3. Algoritmo para convertir una matriz multidimensional en una matriz unidimensional
- 4. ¿Cómo urlencode una matriz multidimensional?
- 5. ¿Cómo recorre una matriz multidimensional?
- 6. array_slice en una matriz multidimensional?
- 7. ¿Cómo imprimo una matriz multidimensional en ruby?
- 8. array_push en una matriz multidimensional
- 9. Actualización de una matriz multidimensional en PHP
- 10. Jinja2: ¿Cómo crear una matriz javascript multidimensional?
- 11. ¿Almacena una matriz multidimensional en una cookie?
- 12. SetLength en matriz multidimensional
- 13. PHP - Almacenando mysql_fetch_assoc en una matriz multidimensional
- 14. Crea una matriz multidimensional dinámica
- 15. Multi-ordenar una matriz multidimensional
- 16. ordenar una matriz asociativa multidimensional?
- 17. almacenando permisos en una matriz multidimensional php
- 18. Cómo filtrar matriz javascript multidimensional
- 19. índice del elemento en una matriz multidimensional
- 20. typedef de una matriz multidimensional?
- 21. Ordenar una matriz multidimensional en javascript
- 22. str_getcsv en una matriz multidimensional en php
- 23. PHP - desarmado en una matriz multidimensional
- 24. Convertir una matriz multidimensional en una matriz unidimensional
- 25. ¿Cómo puedo transportar una imagen en ensamblaje?
- 26. Autocorrelación de una matriz multidimensional en numpy
- 27. Agregando a una matriz multidimensional en PHP
- 28. Ordenar una matriz multidimensional en VBA
- 29. Crear una matriz multidimensional en vb.net
- 30. crear una matriz multidimensional en un bucle
cuadrado o no? hace una gran diferencia – Anycorn
@aaa: La transposición de una matriz no cuadrada en su lugar no tiene mucho sentido. – Jens
Aunque dependiendo de la representación (por ejemplo, usando una única matriz de dimensiones N * M) podría hacerse. –