Числа по возрастанию

  • 10
  • Недоступна
Возможно, вы уже слышали об упорядоченных изоморфах с планеты Линейный Хаос — изобретателях всех методов сортировки. Сегодня нужно решить задачу от них: пользователь вводит с клавиатуры 5 чисел, метод сортирует числа по возрастанию, а другой метод — выводит их на экран. Осилите? Если да, возможно, вам следует посетить Линейный Хаос!
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (227)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Андрей7 уровень, Санкт-Петербург
вчера, 14:44
Используя только тот объем знаний, который дан до данного момента (без массивов, списков, коллекций и прочего - т.е. фактически брутфорс), будем иметь близко к n! операторов if - ну и соответствующую сложность. С помощью функций min/max можно упростить, но не кардинально.
Артем Фомин8 уровень, Москва
позавчера, 15:06
Как так-то?! Все же заработало...
Arthur Ayriyan8 уровень
среда, 02:59
Кто-нибудь может объяснить, почему "Валидация" приняла параметры сортировки: Arrays.sort(myArray, 0, 5); ??? ни 0, 4 ни 1, 5 а именно 0, 5... хотя элементов в массиве 5, а не 6. Кстати, именно вариант с 0, 5 работает правильно.
hidden #224466325 уровень
24 марта, 22:12
Не стоит в этой задаче пытаться писать свой алгоритм сортировки. Во-первых: вы все равно на этом уровне не напишите сортировку лучше, чем это делает стандартная библиотечная функция. Просто поверьте. У того же Седжвика приведено, если не ошибаюсь, 11 разных вариантов банального вроде бы QuickSort с кучей оптимизаций. У Кнута сортировкам посвящен отдельный том. Во-вторых: задача не про сортировку вообще, а про "ввести данные -- напечатать данные", вот и не изобретайте велосипед. Пользуйтесь стандартным сортом. p.s. Я потратил почти два дня, чтоб написать самый быстрый алгоритм сортировки, какой только смогу, пользуясь всем, до чего смог дотянуться. Мой алгоритм в итоге работает в примерно в 5 раз медленней, чем оптимизированный TeamSort из джавы на любых данных, (правда показывает ту же сложность, просто с большей константой, что уже радует), и на этом уровне изучения языка и программирования вообще нет никакого шанса сделать его эффективнее. Не занимайтесь ерундой, ваши самописные пузырьковые сортировки никому не нафиг нужны. Разве что в качестве самостоятельной лабораторки стоит написать несколько сортировок, прогнать каждую по сотне раз на разной длине массива и посчитать используемую память и время исполнения. И попытаться поиграть в оптимизацию. Потом открыть исходник джавовской сортировки и вкурить истину.
Ivan D7 уровень
29 марта, 09:29
спасибо за совет!
endurance22969 уровень, Киев
10 марта, 15:58
В принципе, из без массивов вышло решить, и даже без всяких доп. методов, тупо if else xD 1) в классе создаем 6 статических переменных - 5 (a,b,c,d,e) из них будут ячейками для введенных чисел, и одна counts 2) создаем цикл для последовательного ввода с клавиатуры (колличество переменных регулируем с помощью статического counts) 3) создаем отдельный if для каждого значения counts от 1 до 5 4) при counts==1 присваеваем a введенное значение (пока что единственное) 5) при counts==2 проверяем, не меньше ли нововведенное значение, чем предыдущее (которое уже находиться в a и мы спокойно можем его сравнивать), если меньше, двигаем первое значение в переменную b, а нововведенное сохраняем в a, ну и соответственно если больше, просто сохраняем в b 6) Проверяем таким образом нововеденные числа при всех остальных counts (3,4,5), сравнивая со всеми переменными и двигаем значения, в зависимости от результата выполнения условий. 7) после завершения цикла получаем наши числа присвоенные переменным от a до e в порядке возрастания. Вуаля:) Код на самом деле получился длинным, и далеко не самым легко читаемым. Так что, возможно, отложить эту задачку до изучения массивов и т.д. не такая уж и плохая идея)) У кого вышло решить элегантнее, на знаниях полученных из курса до конца 6го уровня, кидайте в комменты, буду рад просветиться:)
Ivan Re8 уровень, Сидней
29 февраля, 05:52
Смотрел видосик про массивы отдельно, потому использовал их, но чисто для того чтоб не писать 5 раз Инт. Вчера смотрел ЦС50 на рус. как раз про пузырьковую сортировку. Как понял так и применил, работает. НО ЕСТЬ ОДНО НО. Как понять что передвижения чисел не произошло чтоб во время остановить цикл?? Я зациклил 1000 раз =))
Ivan Re8 уровень, Сидней
12 марта, 06:56
это красивый вариант, спасибо
Maxim Belich15 уровень, Минск
27 февраля, 11:54
Советую не использовать стандартну сортировку Чтобы разобраться и понимать сортировку пузырьком посмотрите видео -https://www.youtube.com/watch?v=aXyMkR8LGEo Лично мне очень помогло и сортировка пузырьком стала намного понятней, нежели чем в книге шилдта
Galina Calm7 уровень
23 февраля, 12:46
Повод познакомиться с алгоритмами сортировки массива)
Виталий9 уровень, Минск
16 февраля, 13:18
Как вариант, в задаче можно использовать Collections.sort(intArray) для ArrayList или Arrays.sort(array) для обычного массива. Что нравиться в JavaRush, он мотивирует и учит пользоваться гуглом))) так как это главный инструмент программиста.
qwerty13 уровень, Москва
9 февраля, 14:05
Если хотите решить честно, не использовать массивы, списки и так далее, то вам придется почувствовать себя программистом на ассемблере. Иными словами для решения столь простой задачи вам придется написать примерно 640 строк кода. Это развивает, вы учитесь структурировать более менее большую программу, изобретаете велосипед и становитесь мастером конструкций if else. А теперь вопрос, оно вам надо? Если не хотите терять уйму времени на все это, отложите задачу на потом ибо вы не потеряете многого если не решите ее сейчас использую только пройденный материал.
BariO16 уровень, Nizhniy Novgorod
17 февраля, 16:39
640 строк для сортировки? не смеши
Всеволод8 уровень, Москва
3 марта, 19:01
И не 640, а всего 115😂