对二维矩阵进行排序的方法,我怎样才能使该方法通用?
Posted
技术标签:
【中文标题】对二维矩阵进行排序的方法,我怎样才能使该方法通用?【英文标题】:Method for Sorting 2D Matricies, How can i make the method generic? 【发布时间】:2013-09-19 17:52:56 【问题描述】:public static void Sort2DArray(int[,] matrix)
var numb = new int[matrix.GetLength(0) * matrix.GetLength(1)];
int i = 0;
foreach (var n in matrix)
numb[i] = n;
i++;
Array.Sort(numb);
int k = 0;
for (i = 0; i < matrix.GetLength(0); i++)
for (int j = 0; j < matrix.GetLength(1); j++)
matrix[i, j] = numb[k];
k++;
我很好奇如何使这个方法通用。我希望它可以对双矩阵、字符串矩阵等进行排序。
【问题讨论】:
无关但你可以写numb[i++] = n;
或matrix[i, j] = numb[k++];
。
【参考方案1】:
您可以将IComparable
接口用作泛型类型T
说明符。
【讨论】:
谢谢。我已经解决了。这个问题是一种测试。我从来没有问过任何问题。【参考方案2】:查看这些链接
-
How to Sort 2D Array in C#
How do I sort a two-dimensional array in C#?
http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=151
【讨论】:
【参考方案3】:我已经解决了。该方法如下所示:
public static void Sort2DArray<T>(T[,] matrix)
var numb = new T[matrix.GetLength(0) * matrix.GetLength(1)];
int i = 0;
foreach (var n in matrix)
numb[i] = n;
i++;
Array.Sort(numb);
int k = 0;
for (i = 0; i < matrix.GetLength(0); i++)
for (int j = 0; j < matrix.GetLength(1); j++)
matrix[i, j] = numb[k];
k++;
【讨论】:
以上是关于对二维矩阵进行排序的方法,我怎样才能使该方法通用?的主要内容,如果未能解决你的问题,请参考以下文章