Задача по алгоритмам Ӏ Java Syntax: 9 уровень, 11 лекция

  • 12
  • Недоступна
Вместо кубиков жители планеты Линейный Хаос дают своим детям решать задачки на сортировку. Вот вам одна из забавок маленьких упорядоченных изоморфиков, развлекитесь, как следует: после того, как пользователь введет с клавиатуры список слов (и чисел), программа должна вывести слова в возрастающем порядке, а числа — в убывающем.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (578)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
new Cat("Barsik") 15 уровень, Сызрань
12 февраля, 17:11
Задача класс!!! решил пузырьком только условий по больше.
Error 404 13 уровень, Краснодар
7 февраля, 18:53
Решил по своему)) В методе sort добавил 4 новых списка ArrayList: один с типом String (сюда заносим весь текст) и три с Integer (в один вносим все числа, а в оставшиеся два индексы строк из исходного массива - для чисел и для строк, соответственно). Далее перебор исходного массива с помощью for с условием: - если число if (isNumber(array[i]) == true), то добавляем его в список Integer для всех чисел (незабываем Integer.parseInt() делать) и вносим индекс данного числа в выбранный список; - если строка, аналогично. Все строки в список String, а индексы в Integer. Далее с помощью Collections.sort() сортируем списки со строками и числами, с помощью Collections.reverse() делаем обратную сортировку списка с числами. Далее создаем 2 переменные int (счетчики со значением "0") - они же будущие индексы элементов для наших списков. Далее, так как все элементы в списках уже отсортированы как нам нужно, остается их просто добавить в наш исходный массив. Для этого снова перебираем исходный массив с условием: - если элемент массива число, то на место этого элемента ставим элемент нашего списка с индексом = счетчику (numbers.get(countNumbers)).toString() (обязательно преобразовываем наше число из списка к строке - метод toString()) и наращиваем счетчик; - если элемент массива строка, то просто ставим на его место элемент из списка со строками и наращиваем счетчик array[i] = text.get(countText); countText++; и всё)) P.s. не забыть импортировать класс коллекций, а также в конце метода sort() вызвать метод isGreaterThan(array[0], array[0]). Если не преобразовывать строки в числа в списке для чисел, то их сортировка будет не корректной, например, для строк 9 больше 18.
ASY 14 уровень
7 февраля, 20:26
аналогично рассуждал, только не использовал Collections.sort().
Nikolay 10 уровень, Киев
15 февраля, 13:44
Спасибо!
Дмитрий 11 уровень
23 февраля, 19:04
я в том же направлений был, создал два списка ArrayList <Integer>, ArrayList<String>, только индексы я не стал никуда записывать. Отсортировав коллекциями, я объявил 2 переменные типа инт, и по ним доставал из списков числа и строки, изначальна проверяя не число ли это
for (int i = 0; i < l; i++) {
            String str = array[i];
                if (isNumber(str)) {
                    array[i] = "" + numbers.get(a);
                    a++;
                } else {
                    array[i] = strings.get(b);
                    b++;
                }
            }
        }
6 февраля, 17:07
элементы массива НИКАКОЙ переменной не присваиваете - сравнивайте и заносите в параметры методов сразу ЭЛЕМЕНТЫ массивов весь день убил из-за того, что не получилось, потому что я переменный типа String и int присваивал значения элементов!!!!!!! сравнение двух элементов массива производится ДВОЙНЫМ циклом внешний цикл - сравнение первого элемента со всеми следующими элементами, затем второго элемента, за тем третьего и так далее все следующий элементы перебираются внутренним циклом!
6 февраля, 17:13
а я сравнивал друг с другом ПЕРЕМЕННЫЕ и менял их местами, поэтому НИЧЕГО не работало а нужно непосредственно САМИ элементы
Dmitry Panchenko 15 уровень, Москва
4 февраля, 18:01
Как и ранее делали, такая же сортировка. Только чуток IF'ов надо дописать.
Alexander 18 уровень
18 января, 11:06
Подсказка - отрицательные числа тут не рассматриваются, поэтому не заморачивайтесь с обрабатыванием минуса)
Anonymous #2412943 Работает в Вымпелком
17 января, 11:54
Когда жёлудь вкусный..., ой, когда задание грамотно сформулировано - его и решать приятно, несмотря на сложность. Решил через доп списки. Ох, уж эти сказочки про Красную Шапочку, ох, уж эти сказочники...
Алексей Соловьев 22 уровень, Одесса
16 января, 20:12
а это нормально чо при вроде бы рабочем коде который должен выводить числа со строками выводятся Exception-сы и програ проходит валидацию? при запуске "правильного решения" которое оказалось не сильно разное с моим решением выдается java.lang.NullPointerException at com.javarush.task.task09.task0930.Solution.main(Solution.java:16) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в обоих случаях. кстати у кого есть ссылка что означают "java.16" или "java 62" и прочее, почитать что значат.
Gremislav Lebedev 17 уровень
19 января, 13:23
Это строка, на выполнении которой произошла ошибка
руслан Software Developer в Росбанк
26 января, 14:53
Нет пустой входной строки - во входных данных в концовке щелкнуть энтером
Юра Фаршинев 15 уровень
15 января, 16:13
Сортировка выбором в помощь https://javarush.ru/groups/posts/1997-algoritmih-sortirovki-v-teorii-i-na-praktike
Den Business Automation Leade в Affect
12 января, 20:53
Я безусловно уверен, что есть гениальные решения в комментах. Наверняка еще и компактные! ;) Но я сделал так и искренне рад, что сам :) Если кто то решит воспользоваться или понять - спрашивайте. Объясню.
Vilgelm Brinster 15 уровень, Караганда
16 января, 09:48
Есть ведь кнопка "получить правильное решение" (самая правая). Вот там действительно компактное решение. Я изначально сделал немного похоже, как у Вас. Вытащил из массива отдельно строки и отдельно числа. Но не в карту, а в списки (strings, numbers). И создал еще один список с индексами (indexes), которые были у чисел в изначальном массиве. Сортировка вставкой чисел и строк, а затем самое интересное - собрать обратно отсортированные списки. Прохожусь по изначальному массиву (for i) и смотрю, принадлежал ли данный индекс (i) какому-нибудь числу до сортировки? (indexes.contains(i)). Если да, то array[i] = следующее значение numbers, если нет - array[i] = следующее значение strings.
AlexeyN 15 уровень
12 января, 15:20
1. Запускаем два цикла на длину массива (я все сделал в fori). 2. Внутри циклов условными операторами прежде всего проверяем на то, чтобы сравниваемые элементы массива были либо цифрами, либо оба были не цифрами. (для этого метод isNumber). 3. Если оба сравниваемых элемента массива цифры, парсим их в int и делаем сортировку по убыванию. 4. Если оба сравниваемых элемента массива не цифры, то сравниваем их с помощью метода isGreaterThan и сортируем по возрастанию. Мне понадобилось два цикла и четыре условных оператора.