Как создать сортировку двумерного массива по возрастанию с#

Как создать сортировку двумерного массива, по возрастанию? Второй день ломаю голову и ни к чему не прихожу, нужна помощь :( на c#

Например есть массив

  • 4,7,8
  • 5,2,3
  • 6,7,9

Как сделать сортировку его так, что бы получился по возрастанию, то бишь

  • 2,3,4
  • 5,6,7
  • 7,8,9

Ответы (2 шт):

Автор решения: Алексей Шиманский
  1. Надо сложить все элементы двумерного массива в одномерный (двойной цикл)
  2. Отсортировать одномерный массив
  3. Из одномерного массива положить данные в многомерный, пробегаясь от начала одномерного к его концу (можно также использовать два цикла)

Второй вариант:

Если представить, что двумерный массив, это одномерный (ведь у него также индексы идут с 0 до N по возрастанию.....можно представить, что это змея, которая свернулась несколько раз), то можно спокойно применять метод сортировки одномерного массива с поправкой на то, что будут два цикла. ¯\_(ツ)_/¯

→ Ссылка
Автор решения: Hostik Den

Пример по методу Алексея Шиманского:

Console.Clear();

int[,] myMatrix = new int[3, 3]
{
            {4,7,8},
            {5,2,3},
            {6,7,9}
};

Console.WriteLine($"####### DEFAULT MATRIX #######\n");
PrintArray(myMatrix);

int[] myArray = new int[9];
int z = 0;
for (int i = 0; i < myMatrix.GetLength(0); i++)
    for (int j = 0; j < myMatrix.GetLength(1); j++)
    {
        myArray[z] = myMatrix[i, j];
        z++;
    }

for (int i = 0; i < myArray.Length; i++) { }
int[] result = myArray.OrderBy(i => i).ToArray();
for (int i = 0; i < result.Length; i++) { }

Console.WriteLine($"####### SORT MATRIX #######\n");

int[,] sortMyMatrix = new int[3, 3];
int k = 0;
for (int i = 0; i < sortMyMatrix.GetLength(0); i++)
{
    for (int j = 0; j < sortMyMatrix.GetLength(1); j++)
    {
        sortMyMatrix[i, j] = result[k];
        Console.Write($"{sortMyMatrix[i, j]}\t");
        k++;
    }
    Console.WriteLine($"\n");
}

void PrintArray(int[,] matr)
{
    for (int i = 0; i < matr.GetLength(0); i++)
    {
        for (int j = 0; j < matr.GetLength(1); j++)
            Console.Write($"{matr[i, j]}\t");
        Console.WriteLine($"\n");
    }
}
→ Ссылка