Согласованная сортировка двухмерного массива - 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;
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д