📜  锯齿状数组到二维数组 c# (1)

📅  最后修改于: 2023-12-03 15:42:09.755000             🧑  作者: Mango

锯齿状数组到二维数组 c#

在C#中,锯齿状数组(Jagged Array)是一个由数组组成的数组,它与二维数组相比,具有更高的灵活性,但是其添加和删除操作会更为复杂。在本文中,我们将介绍如何将锯齿状数组转换为二维数组。

锯齿状数组

锯齿状数组是一个由数组组成的数组。例如,下面的代码创建了一个由两个数组组成的锯齿状数组:

int[][] jaggedArray = new int[2][];
jaggedArray[0] = new int[] { 1, 2, 3 };
jaggedArray[1] = new int[] { 4, 5 };

在这个锯齿状数组中,第一个元素是一个由三个整数组成的数组,第二个元素是一个由两个整数组成的数组。可以通过以下方式访问它们:

Console.WriteLine(jaggedArray[0][0]); // Output: 1
Console.WriteLine(jaggedArray[0][1]); // Output: 2
Console.WriteLine(jaggedArray[0][2]); // Output: 3
Console.WriteLine(jaggedArray[1][0]); // Output: 4
Console.WriteLine(jaggedArray[1][1]); // Output: 5
二维数组

二维数组是一个由行和列组成的矩阵。下面的代码创建了一个由三行四列的二维数组:

int[,] twoDimensionalArray = new int[3, 4];

可以通过以下方式访问它们:

twoDimensionalArray[0, 0] = 1;
twoDimensionalArray[0, 1] = 2;
twoDimensionalArray[0, 2] = 3;
twoDimensionalArray[0, 3] = 4;
twoDimensionalArray[1, 0] = 5;
twoDimensionalArray[1, 1] = 6;
twoDimensionalArray[1, 2] = 7;
twoDimensionalArray[1, 3] = 8;
twoDimensionalArray[2, 0] = 9;
twoDimensionalArray[2, 1] = 10;
twoDimensionalArray[2, 2] = 11;
twoDimensionalArray[2, 3] = 12;

Console.WriteLine(twoDimensionalArray[0,0]); // Output: 1
Console.WriteLine(twoDimensionalArray[0,1]); // Output: 2
Console.WriteLine(twoDimensionalArray[0,2]); // Output: 3
Console.WriteLine(twoDimensionalArray[0,3]); // Output: 4
Console.WriteLine(twoDimensionalArray[1,0]); // Output: 5
Console.WriteLine(twoDimensionalArray[1,1]); // Output: 6
Console.WriteLine(twoDimensionalArray[1,2]); // Output: 7
Console.WriteLine(twoDimensionalArray[1,3]); // Output: 8
Console.WriteLine(twoDimensionalArray[2,0]); // Output: 9
Console.WriteLine(twoDimensionalArray[2,1]); // Output: 10
Console.WriteLine(twoDimensionalArray[2,2]); // Output: 11
Console.WriteLine(twoDimensionalArray[2,3]); // Output: 12
将锯齿状数组转换为二维数组

将锯齿状数组转换为二维数组相对较为复杂。首先,需要确定转换后的二维数组的行和列。锯齿状数组中的子数组可能具有不同的长度,因此需要找出其中最长的一个长度作为列数。然后,锯齿状数组的长度就是转换后的二维数组的行数。

下面的代码将一个长度为四的锯齿状数组转换为一个由三行四列的二维数组:

int[][] jaggedArray = new int[4][];
jaggedArray[0] = new int[] { 1, 2 };
jaggedArray[1] = new int[] { 3, 4, 5 };
jaggedArray[2] = new int[] { 6 };
jaggedArray[3] = new int[] { 7, 8, 9, 10 };
            
int[,] twoDimensionalArray = new int[jaggedArray.Length, jaggedArray.Max(x => x.Length)];

for (int i = 0; i < jaggedArray.Length; i++)
{
    for (int j = 0; j < jaggedArray[i].Length; j++)
    {
        twoDimensionalArray[i, j] = jaggedArray[i][j];
    }
}

在上面的代码中,我们使用Max方法找出了锯齿状数组中子数组的最大长度。通过使用两个循环,我们将锯齿状数组中的元素放入二维数组中。现在,可以通过以下方式访问此二维数组中的元素:

Console.WriteLine(twoDimensionalArray[0,0]); // Output: 1
Console.WriteLine(twoDimensionalArray[0,1]); // Output: 2
Console.WriteLine(twoDimensionalArray[1,0]); // Output: 3
Console.WriteLine(twoDimensionalArray[1,1]); // Output: 4
Console.WriteLine(twoDimensionalArray[1,2]); // Output: 5
Console.WriteLine(twoDimensionalArray[2,0]); // Output: 6
Console.WriteLine(twoDimensionalArray[3,0]); // Output: 7
Console.WriteLine(twoDimensionalArray[3,1]); // Output: 8
Console.WriteLine(twoDimensionalArray[3,2]); // Output: 9
Console.WriteLine(twoDimensionalArray[3,3]); // Output: 10
结论

在本文中,我们介绍了C#中的锯齿状数组和二维数组,并展示了如何将锯齿状数组转换为二维数组。通过这个示例,我们可以看到,锯齿状数组具有更高的灵活性,但是其添加和删除操作会更为复杂,同时锯齿状数组转换为二维数组时也需要进行额外的操作。