Согласованная сортировка двухмерного массива - C#

Узнай цену своей работы

Формулировка задачи:

Выводит не то, что нужно... Выводит отсортированные строки ВСЕ по порядку. А нужно только первую по порядку, т.е. привязать к первой строке все остальные столбцы(или строки, кто как понимает). Пример массива из сортировок ниже:
int[,] array = {{4,3,1,2},
                {4,6,7,6},
                {8,4,1,5}};
Выводит на обоих сортировках так:
                {1,2,3,4},
                {4,6,6,7},
                {1,4,5,8}

А нужно вот так:

                {1,2,3,4},
                {7,6,6,4},
                {1,5,4,8}
Ребята, выручайте

Сортировка 2-х мерного массива ВСТАВКАМИ:

static void Main(string[] args)
        {
            // Инициализация массива.
            int[,] array = {{4,3,1,2},
                            {4,6,7,6},
                            {8,4,1,5}};
            // Инициализация переменных.
            int max_size_strok = array.GetLength(0) - 1; // Отчет с нуля (для удобства).
            // Пример: 3 4 1  max_size_strok     == 2 - 1 == 1     [0,0] [0,1] [0,2]
            //         5 2 9  max_size_stolbtsov == 3 - 1 == 2     [1,0] [1,1] [1,2]
            int max_size_stolbtsov = array.GetLength(1) - 1; // Отчет с нуля (для удобства).
            int save = 0; // Помогает менять местами элементы массива.            
            //Вывод массива.
            Console.WriteLine("Исходный массив:\n");
            for (int i = 0; i <= max_size_strok; i++)
            {
                for (int j = 0; j <= max_size_stolbtsov; j++)
                {
                    Console.Write("{0}\t", array[i, j]);
                }
                Console.WriteLine();
            }
            //Сортировка массива ВСТАВКАМИ.
            for (int k = 0; k <= max_size_strok; k++)
            {
                for (int j = 0; j <= max_size_stolbtsov; j++)
                {
                    for (int i = 0; i <= max_size_stolbtsov - 1; i++)
                        if (array[k, i] > array[k, i + 1])
                        {
                            save = array[k, i];
                            array[k, i] = array[k, i + 1];
                            array[k, i + 1] = save;
                        }
                }
            }
            //Вывод массива.
            Console.WriteLine("\nОтсортированный массив:\n");
            for (int i = 0; i <= max_size_strok; i++)
            {
                for (int j = 0; j <= max_size_stolbtsov; j++)
                {
                    Console.Write("{0}\t", array[i, j]);
                }
                Console.WriteLine();
            }                                                            
            // Задержка.
            Console.ReadKey();
        }

Сортировка 2-х мерного массива ВЫБОРОМ:

static void Main(string[] args)
        {
            // Инициализация массива.
            int[,] array = {{4,3,1,2},
                            {4,6,7,6},
                            {8,4,1,5}};
            // Инициализация переменных.
            int max_size_strok = array.GetLength(0) - 1; // Отчет с нуля (для удобства).
            // Пример: 3 4 1  max_size_strok     == 2 - 1 == 1     [0,0] [0,1] [0,2]
            //         5 2 9  max_size_stolbtsov == 3 - 1 == 2     [1,0] [1,1] [1,2]
            int max_size_stolbtsov = array.GetLength(1) - 1; // Отчет с нуля (для удобства).
            int save = 0; // Помогает менять местами элементы массива.            
            //Вывод массива.
            Console.WriteLine("Исходный массив:\n");
            for (int i = 0; i <= max_size_strok; i++)
            {
                for (int j = 0; j <= max_size_stolbtsov; j++)
                {
                    Console.Write("{0}\t", array[i, j]);
                }
                Console.WriteLine();
            }
             //Сортировка массива ВЫБОРОМ.
            for (int k = 0; k <= max_size_strok; k++)
            {
                for (int i = 0; i <= max_size_stolbtsov; i++)
                {
                    int min = i;
 
                    for (int j = i + 1; j <= max_size_stolbtsov; j++)
                    {
                        if (array[k, j] < array[k, min])
                        {
                            min = j;
                        }
                    }
 
                    save = array[k, i];
                    array[k, i] = array[k, min];
                    array[k, min] = save;
                }
            }
            //Вывод массива.
            Console.WriteLine("\nОтсортированный массив:\n");
            for (int i = 0; i <= max_size_strok; i++)
            {
                for (int j = 0; j <= max_size_stolbtsov; j++)
                {
                    Console.Write("{0}\t", array[i, j]);
                }
                Console.WriteLine();
            }
            // Задержка.
            Console.ReadKey();}

Решение задачи: «Согласованная сортировка двухмерного массива»

textual
Листинг программы
//Сортировка массива ВСТАВКАМИ.
            for (int i = 0; i <= max_size_strok; i++)
            {
                for (int j = 0; j < max_size_stolbtsov; j++)
                {
                    
                        if (array[0, j] >= array[0, j + 1])
                        {
                            for (int k = 0; k <= max_size_stolbtsov - 1; k++)
                            {
                                save = array[k, j];
                                array[k, j] = array[k, j + 1];
                                array[k, j + 1] = save;
                            }                            
                        }
                }
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5