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

我很好奇如何使这种方法通用。我希望它可以对双矩阵、字符串矩阵等进行排序。

4

3 回答 3

1

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

于 2013-09-15T14:31:01.117 回答
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++;
            }
        }
    }
于 2013-12-28T13:00:24.203 回答