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

I'm curious how can I make this method generic. I wish that it could sort double matrices, string matrices and so on and so forth.

Eugene Lisitsky
  • 12,113
  • 5
  • 38
  • 59
Rezo Megrelidze
  • 2,877
  • 1
  • 26
  • 29

3 Answers3

1

You can use IComparable interface as a generic type T specifier.

mr_esp
  • 211
  • 2
  • 7
0

I have solved it. the method looks like this:

    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++;
            }
        }
    }
Rezo Megrelidze
  • 2,877
  • 1
  • 26
  • 29