¿Cómo se almacena una matriz bidimensional en la memoria?

El almacenamiento de matriz es generalmente un vector unidimensional de valores con indexación calculada por el compilador a partir del tamaño del elemento y los índices multidimensionales. Sin embargo, diferentes idiomas almacenan sus matrices de manera diferente. Fortran almacena las matrices con el primer índice que varía más rápido, mientras que C almacena las matrices con el último índice que varía más rápido, por lo que si tiene un programa en varios idiomas será confuso.

Las matrices en lenguajes como Python o Matlab o Julia serán más complicadas, y las matrices dispersas se almacenan de manera diferente una vez más, y las matrices en lenguajes PGAS como UPC o Titanium pueden estar divididas en nodos diferentes en la red.

Puede escribir programas de prueba para resolver todo esto si no desea leer el código del lenguaje ensamblador. En C, por ejemplo, cree un puntero a, por ejemplo, A [i] [j] e imprima su valor para ver cómo cambia.

Como una matriz lineal unidimensional …

La diferencia es que los dos subíndices utilizados para la matriz 2D se combinan en un solo desplazamiento.

Una referencia como A [i, j] se convierte en (i * size_of_dimensionj + j), que luego se agrega a la dirección base A.

Nota: esto NO se usa para matrices dispersas. Las matrices dispersas tienen un acceso más complejo y dependen de cómo se use el acceso.

More Interesting

¿Es cierto que si entendemos los algoritmos podemos entender todos los programas difíciles de todos los idiomas?

¿Hay diseñadores que diseñan algoritmos?

¿De qué maneras se usan los algoritmos y con qué frecuencia se usan?

¿Cuáles son las mejores prácticas para usar algoritmos de Machine Learning con Android?

¿Cómo explicaría el Control de concurrencia de versiones múltiples en términos simples?

¿Cómo se pueden condensar hipergrafías construidas para problemas de flujo de red que implican minimizar el tiempo necesario para impulsar el flujo desde la fuente al sumidero?

¿Los ingenieros de software de Google, Amazon, etc. utilizan estructuras de datos y algoritmos en el desarrollo de aplicaciones en tiempo real?

¿Cuál es el mejor algoritmo de búsqueda en programación?

¿Qué software / algoritmo se usa para hacer partidos de la liga de fútbol o cualquier evento deportivo enorme?

Conozco la implementación básica de diferentes estructuras de datos como árboles, gráficos, colas y muchos más para inserción, eliminación, recorrido. Ahora, ¿cómo procedo a construir un sistema operativo?

¿Cuál es la ecuación general para calcular la probabilidad de encontrar una cadena de longitud N en una cadena M más larga de caracteres aleatorios, cada uno elegido de {AZ}?

Cómo demostrar que este gráfico todavía puede estar fuertemente conectado

¿Cómo podemos generar k enteros aleatorios únicos en el rango [1 ... n] con igual probabilidad?

¿Cómo se realiza la agrupación en el sondeo lineal en hashing con direccionamiento abierto?

¿Los algoritmos están optimizados para discos duros normales * no * optimizados para unidades de estado sólido?