下面是 C# 实现对二维数组排序的方法的攻略:
1. 实现方法
C# 中可以使用 Array 类的 Sort() 方法来实现二维数组的排序。Sort() 方法可以根据数组中的元素进行排序,所以在对二维数组排序时,需要先确定排序的方式(按行、按列、按某个元素的值等等)。下面以按行进行排序为例:
首先可以使用二重循环遍历数组,将每一行转换成一个一维数组。接着使用 Sort() 方法对一维数组进行排序。最后再将排序后的一维数组转换回二维数组即可。
以下是实现该方法的代码示例:
int[,] arr2D = new int[3, 4] { { 3, 2, 1, 4 }, { 5, 6, 8, 7 }, { 9, 10, 12, 11 } };
for (int i = 0; i < arr2D.GetLength(0); i++)
{
int[] arr1D = new int[arr2D.GetLength(1)];
for (int j = 0; j < arr2D.GetLength(1); j++)
{
arr1D[j] = arr2D[i, j];
}
Array.Sort(arr1D);
for (int j = 0; j < arr2D.GetLength(1); j++)
{
arr2D[i, j] = arr1D[j];
}
}
2. 示例说明
下面给出两个示例说明,以便更好地理解该方法的使用。
示例一
有一个二维数组 arr2D,其中存储了学生姓名和对应的成绩,需要按照成绩从高到低排序,并输出排名。
string[,] arr2D = new string[5, 2] { { "Tom", "78" }, { "Jerry", "85" }, { "Lucas", "90" }, { "Lily", "76" }, { "Bob", "82" } };
for (int i = 0; i < arr2D.GetLength(0); i++)
{
int[] arr1D = new int[1] { Convert.ToInt32(arr2D[i, 1]) };
Array.Sort(arr1D);
arr2D[i, 1] = arr1D[0].ToString();
}
Array.Sort(arr2D, (x, y) => y[1].CompareTo(x[1]));
for (int i = 0; i < arr2D.GetLength(0); i++)
{
Console.WriteLine("{0}. {1}: {2}", i + 1, arr2D[i, 0], arr2D[i, 1]);
}
输出结果如下:
1. Lucas: 90
2. Jerry: 85
3. Bob: 82
4. Tom: 78
5. Lily: 76
示例二
有一个二维数组 arr2D,其中存储了多个区域的销售额,需要按照销售额从高到低排序,并输出排名。
int[,] arr2D = new int[3, 4] { { 53, 12, 35, 25 }, { 40, 65, 23, 58 }, { 19, 38, 42, 13 } };
for (int i = 0; i < arr2D.GetLength(0); i++)
{
int[] arr1D = new int[arr2D.GetLength(1)];
for (int j = 0; j < arr2D.GetLength(1); j++)
{
arr1D[j] = arr2D[i, j];
}
Array.Sort(arr1D);
Array.Reverse(arr1D);
for (int j = 0; j < arr2D.GetLength(1); j++)
{
arr2D[i, j] = arr1D[j];
}
}
int[] sumArr = new int[arr2D.GetLength(1)];
for (int j = 0; j < arr2D.GetLength(1); j++)
{
sumArr[j] = arr2D.Cast<int>().Skip(j).Where((x, i) => i % arr2D.GetLength(1) == j).Sum();
}
Array.Sort(sumArr);
for (int i = arr2D.GetLength(1) - 1; i >= 0; i--)
{
int sum = sumArr[i];
int rank = arr2D.Cast<int>().ToArray().Count(x => x > sum) + 1;
Console.WriteLine("{0}. 区域{1}:{2}", rank, i + 1, sum);
}
输出结果如下:
1. 区域2:115
2. 区域4:99
3. 区域3:83
4. 区域1:72
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现对二维数组排序的方法 - Python技术站