![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Kizja |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 15.7.2007 Репутация: нет Всего: нет |
Привет, столкнулся с проблемой грамотной сортировки и вывода двойного массива на экран...
Вывод должен быть следующим: X1 X2 X3 X4 X5 SUM Y1 0 1 2 3 4 10 Y2 5 6 7 8 9 35 Y3 10 11 12 13 14 60 Y4 15 16 17 18 19 85 Y5 20 21 22 23 24 110 SUM 50 55 60 65 70 Условия такие, что как горизонтальные, так и вертикальные ряды можно менять местами, т.е. начальная таблица имеет последовательность X1 X2 X3 X4 X5 и Y1 Y2 Y3 Y4 Y5, но они могут менять свои места... Написал следующий, на мой взгляд, не самый лучший вариант:
Кто-нибудь в состоянии предложить более грамотный вариант ? Особенно недоволен методом print(), который как-то совсем покорявому выполняет свою задачу... Данные не обязаны быть в двумерном массиве int[][], а могут иметь какой либо другой формат - главная задача в том, чтобы имелась возможность смены колонок и учёт изменения их индексации и суммы колонок... Это сообщение отредактировал(а) Kizja - 15.4.2010, 18:24 |
||||
|
|||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 5 Всего: 9 |
Что есть и что нужно сделать?
|
|||
|
||||
| jk1 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Работает для квадратных матриц, на прямоугольные легко обобщается
-------------------- Opinions are like assholes — everybody has one |
|||
|
||||
| Kizja |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 15.7.2007 Репутация: нет Всего: нет |
jk1, твой вариант, если я не ошибаюсь, не соответствует условиям задачи... он просто вроде сортирует элементы, в данной задаче рассматривается ряд как единое целое...
MaxPayneC, условия такие, что программа должна позволять оперировать целыми колонками и рядами: Изначально может быть любой массив, но предположим, что он такой: 0 1 2 3 4 ============== 0 | 11 12 13 14 15 | 1 | 21 22 23 24 25 | 2 | 31 32 33 34 35 | 3 | 41 42 43 44 45 | 4 | 51 52 53 54 55 | 5 | 61 62 63 64 65 | ============== (0..4 и 0..5 индексы вертикальных и горизонтальных колонок) задаётся допустим что хотим: а) поменять местами горизонтальные колонки с индексами 0 и 3 б) поменять местами вертикальные колонки с индексами 0 и 4
т.е. меняются местами горизонтальные элементы: 11 12 13 14 15 и 41 42 43 44 45 получается такое: 41 42 43 44 45 21 22 23 24 25 31 32 33 34 35 11 12 13 14 15 51 52 53 54 55 61 62 63 64 65 и меняются вертикальные элементы: 41 45 21 25 31 35 11 и 15 51 55 61 65 получается в итоге такое: 45 42 43 44 41 25 22 23 24 21 35 32 33 34 31 15 12 13 14 11 55 52 53 54 51 65 62 63 64 61 Кроме того, что поменяли надо учитывать начальные индексы и расчитывать сумму рядов, т.е. вывод будет такой: 4 1 2 3 0 SUM ============== 3 | 45 42 43 44 41 | 215 1 | 25 22 23 24 21 | 115 2 | 35 32 33 34 31 | 165 0 | 15 12 13 14 11 | 65 4 | 55 52 53 54 51 | 265 5 | 65 62 63 64 61 | 216 ============== SUM 240 222 228 234 216 Тот вариант, что привёл я в прошлом сообщении работает правильно, но он корявый... Это сообщение отредактировал(а) Kizja - 15.4.2010, 19:54 |
|||
|
||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 5 Всего: 9 |
Мне кажется, ваш подход оптимален для этой задачи. Единственное что, я бы суммы не хранил. А в целом поход зависит от того, зачем вам это надо - если нужно часто выводить результат и пересчет будет занимать много времени - тогда не хранить, а пересчитывать суммы.
Если не секрет, зачем вам такие операции с матрицей? |
|||
|
||||
| _Y_ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1651 Регистрация: 27.11.2006 Репутация: 5 Всего: 34 |
Поскольку тема не в алгоритмах, а в Java, думаю не грех упоминуть про Arrays.sort. Дописать соответстующий Comparator. А потом только сортировать в разных направлениях транспонируя матрицу туда-сюда.
-------------------- Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:) |
|||
|
||||
| Kizja |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 81 Регистрация: 15.7.2007 Репутация: нет Всего: нет |
MaxPayneC, Да не, не секрет - в университете надо реализовать алгоритм, если интересно, то вот здесь презентация в PowerPoint о том, как он должен работать: http://maurus.ttu.ee/ained/IDN5590_K10/doc/3/pluss.zip
Я уже реализовал и правильно работает, но у меня не было предусмотрено программой вывод индексов элементов и их суммы - и никак теперь не придумать, как нормально переделать... получается какое-то извращение Если интересно, то могу в принципе выложить программу (строчек 200 кода), хотя врядли у вас есть желание вникать... Могу в принципе на###кодить, но не хотелось бы... поэтому и создал эту тему Это сообщение отредактировал(а) Kizja - 15.4.2010, 23:26 |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |