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

  • 5
  • Недоступна
Вероятно, вы уже знаете упорядоченных изоморфов с планеты Линейный Хаос, которые любят алгоритмы сортировки, поскольку ими думают. Вот вам задачка для изоморфов младшего школьного возраста: введите с клавиатуры 20 слов и выведите их в алфавитном порядке. А как сортировать? Придумайте, вы уже почти что линейный изоморф!
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (374)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Yakov Bashkurov
Уровень 10, Тобольск, Россия
8 октября, 12:32
эта задача на понимание работы метода
compareTo()
так же в решении этой задачи есть что-то схожее с "пузырьком". Кто-то уже знает что это такое, а кто-то ещё нет, но узнает позже.
Bogdan Lopatenko
Уровень 19, Минск
26 июля, 20:51
Внимание спойлеры! весь код который вам потребуется(курсивом выделена часть кода которая нужна что бы валидатор не ругался): public static void sort(String[] array) { Arrays.sort(array); for (String element : array) { isGreaterThan(element, element); } }
Pol Art
Уровень 14, Кривой Рог, Украина
4 октября, 00:45
Arrays.sort(array); сделал сортировку, а isGreaterThan(element, element); тупо игнорируется, но задача проходит валидацию, так как этот метод isGreaterThan(element, element) был вызван, в методе sort, и пофиг, что всю работу сделал Arrays.sort(array) лол))))
Николай
Уровень 16, Москва, Россия
14 июля, 14:03
Извините не сдержался )))
public static void sort(String[] array) {
       isGreaterThan("A","B");
       Arrays.sort(array);}
Александр Горохов
Уровень 15, Дятьково, Россия
19 сентября, 15:45
а что это за "A" и "B"?)
Николай
Уровень 16, Москва, Россия
23 сентября, 09:45
Пустое сравнение для формального выполнения условия задачи. В "Правильном решении" сортировка вручную написана.
Rodion
Уровень 17, Германия
4 июля, 12:32
Есть лекция вносящая ясность, что делает в данной задаче метод "isGreaterThan" с реализацией compareTo: https://javarush.ru/groups/posts/1885-metod-compareto прочитайте не поленитесь. Хотя первоначально хотелось, сразу после Arrays.sort(array) вызвать пустой метод istGreaterThan и не долго думать... Решение: Сделал через цикл for c вложенным в него других циклом for (чтобы при перестановке пройтись всеми элементами через все элементы), во вложенном цикле j элемент сохраняем в переменную, далее вызываем условный оператор if(isGreaterThan(array[j], array[j + 1])) и прописываем перестановку элементов.
Daniil Nikityuk
Уровень 24, Санкт-Петербург
1 мая, 21:36
Видимо это задача учит вставлять костыли, лишь бы валидатор принимал ответ.
Валентин
Уровень 9, Северодвинск, Россия
11 апреля, 19:24
Добрый вечер всем! Будьте добры, объясните пожалуйста на пальцах как работают здесь циклы! for (int i = 0; i < array.length; i++) { for (int j = i; j < array.length; j++) { if (isGreaterThan(array[i], array[j])) { String temp = array[i]; array[i] = array[j]; array[j] = temp; Спасибо!
~tcin
Уровень 18, Barnaul
18 апреля, 13:42
ну если я правильно понимаю... то первый цикл отвечает за кол-во элементов а, второй за кол-во символов в строке вроде как то так)
JaamCz
Уровень 16, Москва, Россия
23 апреля, 17:15
Здесь реализована обычная пузырьковая сортировка, мы делаем вложенные циклы для того что бы сравнить элементы массива между собой и отсортировать их. Если более подробно то мы в каждой итерации сравниваем i-ый элемент массива с j-ым элементом этого же массива, передавая их в метод isGraterThan, который внутри устанавливает какая из переданных строк "больше". Более подробно про работу метода сортировки читайте здесь: https://javarush.ru/groups/posts/1885-metod-compareto
Василий training в NIX Solutions
11 марта, 09:50
в упор не понимаю, зачем изобретать велосипед, я про метод isGreaterThan, если можно воспользоваться готовым методом sort.
Стас Чередниченко
Уровень 14, Одесса, Украина
17 марта, 13:31
Ну, на практике, мы должны уметь пользоваться всеми возможными способами решения поставленной задачи. Правда мне и самому было лень искать описание компоратора, и я сделал через sort :| А метод вызвал только для обхода валидатора :| И вот ничерта нет чувства выполнения поставленной задачи...
Василий training в NIX Solutions
17 марта, 13:39
я тоже сделал так же. Но думаю лучше бы если нам про компаратор объяснили с лекций и сделали это до решения задач. Я согласен с тем что много чего нужно гуглить самим. Но мы же сюда пришли не для того чтоб учится гуглить, а учить курс.
Maks Panteleev
Уровень 41, Москва, Россия
23 марта, 13:59
я даже делать ничего не стал, юзанул готовое решение. Это идиотизм пыжиться над решением задач, которые уже миллиард лет назад решили. Все, есть методы сорт уже. Нужно пользоваться ими и не морочить людям голову. Если тратить свое время на изобретение уже изобретенных методов, можно выучиться на джуна примерно никогда.
bakvit
Уровень 13, Москва, Россия
24 апреля, 09:44
https://www.youtube.com/watch?v=hqIXm7Ontdg тут все понятно разложено
Василий training в NIX Solutions
24 апреля, 11:25
но не на нашем же уровне)
Ilyas Badavi
Уровень 15, Казань
1 марта, 17:01
Метод compareTo (String a,String b) возвращает -1 если "String a", по алфавиту стоит раньше чем "String b" возвращает 0 если "String a" и "String b" по алфавиту одинаковы возвращает 1 если "String a", по алфавиту стоит позже чем "String b"
Ksenia Sidelnikova QA Automation Engineer в HUMANS.UZ
1 марта, 01:32
public static void sort(String[] array) { //напишите тут ва,ш код boolean r = true; while (r){ int count = 0; for (int i = 0; i < 19; i++ ) { boolean p = isGreaterThan(array[i], array[i + 1]); if (p){ String a = array[i]; String b = array[i + 1]; r = true; array[i] = b; array[i + 1] = a; } if (!p) { count = count + 1; } if (count == 19){ r = false; } } } }
Igor
Уровень 41, Минск, Беларусь
22 февраля, 20:52
Вот реально сидел писал костыли вместо метода sort. Вот один костыль:
boolean needIteration = true;
       while (needIteration) {
           needIteration = false;
           for (int i = 1; i < array.length; i++) {
               if (!isGreaterThan(array[i], array[i - 1])) {
                   String tmp = array[i - 1];
                   array[i - 1] = array[i];
                   array[i] = tmp;
                   needIteration = true;
               }
           }
       }
   }
Вот то же самое:
for (int i = 0; i < array.length; i++) {
            for (int j = i; j < array.length; j++) {
                if (isGreaterThan(array[i], array[j])) {
                    String temp = array[i];
                    array[i] = array[j];
                    array[j] = temp;
                }
            }
        }
    }
Вот ещё такое же:
for (int i = array.length-1; i > 0; i--) {
    for (int j = 0; j < i; j++) {
        if (isGreaterThan(array[j], array[j+1])) {
            String tmp = array[j];
            array[j] = array[j+1];
            array[j+1] = tmp;
        }
    }
}
Тимур Акматов
Уровень 18, Бишкек, Кыргызстан
4 апреля, 12:32
вот первый вариант стоит взять на вооружение 👍
AnnaBin
Уровень 14, Воронеж, Россия
2 мая, 15:18
Добрый день. Не могли бы часть с использованием цикла объяснить, что происходит в каждой строчке кода? boolean needIteration = true; while (needIteration) { needIteration = false;
Igor
Уровень 41, Минск, Беларусь
2 мая, 17:35
AnnaBin, добрый день! Смотрите картинку и следуйте по нумерации аннотаций. PS. Сейчас я скажу, что эта задача важна, даёт понять алгоритм. В данном случае алгоритм сортировки. Всего хорошего и успехов касатики😀
AnnaBin
Уровень 14, Воронеж, Россия
3 мая, 14:53
Огромное спасибо. Вчера после N-ного количества минут, проведённых с глазами, вперившимися в экран и пары дополнительных лекций, вроде возникло какое-то подобие понимания. Сегодня после вашего объяснения всё предельно ясно.
Serzhes
Уровень 16, Санкт-Петербург, Россия
18 мая, 16:34
https://javarush.ru/groups/posts/1997-algoritmih-sortirovki-v-teorii-i-na-praktike отсюда похоже взято. почитайте в статье про пузырьковую сортировку