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

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

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

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

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

Листинг программы
  1. {1,2,3,4},
  2. {7,6,6,4},
  3. {1,5,4,8}
Ребята, выручайте

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

Листинг программы
  1. static void Main(string[] args)
  2. {
  3. // Инициализация массива.
  4. int[,] array = {{4,3,1,2},
  5. {4,6,7,6},
  6. {8,4,1,5}};
  7. // Инициализация переменных.
  8. int max_size_strok = array.GetLength(0) - 1; // Отчет с нуля (для удобства).
  9. // Пример: 3 4 1 max_size_strok == 2 - 1 == 1 [0,0] [0,1] [0,2]
  10. // 5 2 9 max_size_stolbtsov == 3 - 1 == 2 [1,0] [1,1] [1,2]
  11. int max_size_stolbtsov = array.GetLength(1) - 1; // Отчет с нуля (для удобства).
  12. int save = 0; // Помогает менять местами элементы массива.
  13. //Вывод массива.
  14. Console.WriteLine("Исходный массив:\n");
  15. for (int i = 0; i <= max_size_strok; i++)
  16. {
  17. for (int j = 0; j <= max_size_stolbtsov; j++)
  18. {
  19. Console.Write("{0}\t", array[i, j]);
  20. }
  21. Console.WriteLine();
  22. }
  23. //Сортировка массива ВСТАВКАМИ.
  24. for (int k = 0; k <= max_size_strok; k++)
  25. {
  26. for (int j = 0; j <= max_size_stolbtsov; j++)
  27. {
  28. for (int i = 0; i <= max_size_stolbtsov - 1; i++)
  29. if (array[k, i] > array[k, i + 1])
  30. {
  31. save = array[k, i];
  32. array[k, i] = array[k, i + 1];
  33. array[k, i + 1] = save;
  34. }
  35. }
  36. }
  37. //Вывод массива.
  38. Console.WriteLine("\nОтсортированный массив:\n");
  39. for (int i = 0; i <= max_size_strok; i++)
  40. {
  41. for (int j = 0; j <= max_size_stolbtsov; j++)
  42. {
  43. Console.Write("{0}\t", array[i, j]);
  44. }
  45. Console.WriteLine();
  46. }
  47. // Задержка.
  48. Console.ReadKey();
  49. }

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

Листинг программы
  1. static void Main(string[] args)
  2. {
  3. // Инициализация массива.
  4. int[,] array = {{4,3,1,2},
  5. {4,6,7,6},
  6. {8,4,1,5}};
  7. // Инициализация переменных.
  8. int max_size_strok = array.GetLength(0) - 1; // Отчет с нуля (для удобства).
  9. // Пример: 3 4 1 max_size_strok == 2 - 1 == 1 [0,0] [0,1] [0,2]
  10. // 5 2 9 max_size_stolbtsov == 3 - 1 == 2 [1,0] [1,1] [1,2]
  11. int max_size_stolbtsov = array.GetLength(1) - 1; // Отчет с нуля (для удобства).
  12. int save = 0; // Помогает менять местами элементы массива.
  13. //Вывод массива.
  14. Console.WriteLine("Исходный массив:\n");
  15. for (int i = 0; i <= max_size_strok; i++)
  16. {
  17. for (int j = 0; j <= max_size_stolbtsov; j++)
  18. {
  19. Console.Write("{0}\t", array[i, j]);
  20. }
  21. Console.WriteLine();
  22. }
  23. //Сортировка массива ВЫБОРОМ.
  24. for (int k = 0; k <= max_size_strok; k++)
  25. {
  26. for (int i = 0; i <= max_size_stolbtsov; i++)
  27. {
  28. int min = i;
  29. for (int j = i + 1; j <= max_size_stolbtsov; j++)
  30. {
  31. if (array[k, j] < array[k, min])
  32. {
  33. min = j;
  34. }
  35. }
  36. save = array[k, i];
  37. array[k, i] = array[k, min];
  38. array[k, min] = save;
  39. }
  40. }
  41. //Вывод массива.
  42. Console.WriteLine("\nОтсортированный массив:\n");
  43. for (int i = 0; i <= max_size_strok; i++)
  44. {
  45. for (int j = 0; j <= max_size_stolbtsov; j++)
  46. {
  47. Console.Write("{0}\t", array[i, j]);
  48. }
  49. Console.WriteLine();
  50. }
  51. // Задержка.
  52. Console.ReadKey();}

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

textual
Листинг программы
  1. //Сортировка массива ВСТАВКАМИ.
  2.             for (int i = 0; i <= max_size_strok; i++)
  3.             {
  4.                 for (int j = 0; j < max_size_stolbtsov; j++)
  5.                 {
  6.                    
  7.                         if (array[0, j] >= array[0, j + 1])
  8.                         {
  9.                             for (int k = 0; k <= max_size_stolbtsov - 1; k++)
  10.                             {
  11.                                 save = array[k, j];
  12.                                 array[k, j] = array[k, j + 1];
  13.                                 array[k, j + 1] = save;
  14.                             }                            
  15.                         }
  16.                 }
  17.             }

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут