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