对二维矩阵进行排序的方法,如何使该方法通用?

时间:2013-09-15 14:28:16

标签: c#

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++;
        }
    }
}

我很好奇如何才能使这种方法变得通用。我希望它可以排序双矩阵,字符串矩阵等等。

3 个答案:

答案 0 :(得分:1)

您可以将IComparable接口用作通用类型T说明符。

答案 1 :(得分:1)

答案 2 :(得分:0)

我已经解决了。方法如下所示:

    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++;
            }
        }
    }