Cómo trabajar con matrices dentadas en C #

Una matriz puede definirse como una colección secuencial de elementos del mismo tipo de datos. Los elementos de una matriz se almacenan en ubicaciones de memoria contiguas. Las matrices pueden ser unidimensionales o multidimensionales. Una matriz dentada es un tipo especial de matriz multidimensional en la que cada una de las matrices (una matriz dentada es en realidad una matriz de matrices) puede tener un tamaño variable.

Puede tener matrices dentadas en cualquier lenguaje informático que admita matrices. Una matriz dentada (también conocida como matriz irregular) es una matriz de matrices en la que las matrices de miembros, a su vez, pueden tener diferentes dimensiones y tamaños. Puede implementar matrices multidimensionales que son matrices dentadas para mejorar el rendimiento.

Empezando con matrices dentadas en C #

En esta sección, exploraremos cómo declarar, inicializar y acceder a matrices dentadas. Como sabemos, una matriz dentada se compone de una matriz de matrices de tamaños similares o diferentes. En otras palabras, en una matriz irregular, el número de filas es fijo, pero el número de columnas puede variar. Al declarar una matriz dentada, puede simplemente declarar el número de filas de la matriz y preferir especificar el número de columnas en tiempo de ejecución.

Háganos saber entender todo lo que hemos aprendido hasta ahora sobre matrices dentadas con algunos ejemplos de código. Considere la siguiente matriz.

string[][] str = new string[5][];

Ha declarado las filas de la matriz. Hay 5 filas en esta matriz que a su vez pueden contener 5 matrices de cadenas de diferentes longitudes. Veamos ahora cómo podemos declarar 5 matrices en la matriz llamada str, cada una de diferentes longitudes. El siguiente fragmento de código ilustra cómo se puede lograr.

str[0] = new string[5];

str[1] = new string[10];

str[2] = new string[20];

str[3] = new string[50];

str[4] = new string[10];

Ahora puede almacenar cadenas de longitudes diferentes en la matriz irregular como se muestra en el fragmento de código a continuación.

str[0][0] = "Pune";

str[1][0] = "Kolkata";

str[2][0] = "Bangalore";

str[3][0] = "The pink city named Jaipur";

str[4][0] = "Hyderabad";

Aquí está la lista completa de códigos que ilustra cómo puede declarar una matriz irregular, almacenar datos y luego recuperarlos y mostrarlos en la consola.

public static void Main(string[] args)

       {

         //First declare the jagged array

           string[][] str = new string[5][];

           str[0] = new string[5];

           str[1] = new string[10];

           str[2] = new string[20];

           str[3] = new string[50];

           str[4] = new string[10];

           //Now store data in the jagged array

           str[0][0] = "Pune";

           str[1][0] = "Kolkata";

           str[2][0] = "Bangalore";

           str[3][0] = "The pink city named Jaipur";

           str[4][0] = "Hyderabad";

            //Lastly, display the content of each of the string arrays inside the jagged array

           for (int i = 0; i < 5; i++)

               Console.WriteLine(str[i][0]);

           Console.Read();

       }

Como puede ver en el programa anterior, el número de filas de la matriz dentada es fijo, pero el número de columnas varía. Este ejemplo representa una matriz dentada bidimensional. Si tuviera que utilizar una matriz bidimensional normal, tendría que consumir 5 x 50, es decir, 250 bytes. La razón es que tendría que tener un espacio de 50 bytes en cada una de las matrices en la matriz dentada para acomodar la cadena más grande. En este ejemplo, la cadena más grande tiene un tamaño de 50. Por el contrario, al usar una matriz dentada, ¡termina consumiendo solo 95 bytes! Interesante, ¿no?

Cuando ejecuta el programa anterior, las cadenas almacenadas en la matriz dentada se muestran en la ventana de la consola.

Otro ejemplo: una matriz irregular de números enteros

De manera similar a como hemos creado una matriz irregular de cadenas, también puede crear una matriz irregular de números enteros. De hecho, puede tener una matriz irregular de cualquier tipo de datos. A continuación, le mostramos cómo puede declarar una matriz irregular en C #.

int [][] numbersArray;

El siguiente fragmento de código ilustra cómo puede declarar una matriz dentada de enteros, es decir, una matriz dentada que a su vez puede almacenar matrices de números enteros de elementos variables.

int[][] numbersArray = new int[5][];

for (int i = 0; i < numbersArray.Length; i++)

   {

         numbersArray[i] = new int[10 * (i + 1)];

   }

El fragmento de código anterior crea una matriz dentada entera llamada numbersArray que a su vez contiene matrices de enteros de diferentes tamaños.