В убывающем порядке

  • 5
  • Недоступна
Упорядоченые изоморфы с планеты Линейный Хаос любят сортировать и принимают в свои ряды тех, кто хорошо умеет это делать. Вы можете возразить, что не собираетесь иметь с ними дело. Не получится: изоморфы часто проводят собеседования в ИТ-компании. Не игнорируем: пишем программу, которая вводит с клавиатуры 20 чисел и выводит их в убывающем порядке.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (352)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Balthazar Java Developer
23 июня, 13:35
Решил с 4 попытки только из-за того, что перепутал строку
sort(array);
с
Arrays.sort(array);
Думал, вроде массив отсортирован, а выводит почему-то неправильно
piersto
Уровень 17, Montreal, Canada
21 июня, 00:39
Пипец издевательство, а не задача! Решить её на 7-м уровне - нереально. Я с 14-го её ели решил, да и то коряво, до ужаса. Умножил сначала весь массив на -1. Код сортировки нагуглил. Опять умножил всё на минус один. Как правильное решение JR даёт эту самую сортировку (пузырьком), только с изменёнными знаками. Вот тут можно посмотреть прямую. http://study-java.ru/uroki-java/urok-11-sortirovka-massiva/
Artamon Khakimov
Уровень 29, Казань, Россия
24 июля, 17:55
Я покапался в интернете минут 30. Понял алгоритм и записал его. Хотя не мне судить, я её вообще пропустил, когда уровень был 7.
Polina
Уровень 9, Москва
31 мая, 12:12
Блин, мне так тяжело даются алгоритмы(( Не смогла написать свою сортировку, решила чрез стандартный Arrays.sort(). может кто-нибудь посоветует что-нибудь по алгоритмам(кроме Кормена). Искала много информации в интернете, но всегда полезно узнать что-то напрямую от людей.
Vlad
Уровень 9
2 июня, 15:37
Всё приходит с практикой, не волнуйся :)
piersto
Уровень 17, Montreal, Canada
21 июня, 00:54
Грокаем Алгоритмы. Иллюстрированное пособие для программистов и любопытствующих Автор: Бхаргава А.
Alexey
Уровень 13, Ярославль, Россия
5 мая, 05:03
Вадим
Уровень 23, Москва
5 мая, 15:01
Так же сделал. Пришлось городить присвоение исходному массиву правильно отсортированного из-за невозможности изменения возвращаемого значения метода (с void на int[])
Андрей
Уровень 16, Москва
4 мая, 12:26
Все пишут про пузырьковую сортировку, но с помощью сортировки выбором тоже удобно решать эту задачу: http://study-java.ru/uroki-java/urok-11-sortirovka-massiva/
hidden #2019093
Уровень 14
3 мая, 08:30
Задачу решил, но не могу понять почему после вызова метода сортировки sort, массив array становится отсортированным, ведь метод sort ничего не возвращает. В случае с простой переменной, все нормально и ее значение сохраняется. Где про это можно почитать?
int[] array = new int[20];
      for (int i = 0; i < 20; i++) {
          array[i] = Integer.parseInt(reader.readLine());
      }

      sort(array);

      for (int x : array) {
          System.out.println(x);
      }
Вадим
Уровень 23, Москва
5 мая, 14:52
Что же тут непонятного, вы ж его сами в методе отсортировали:)? Ссылка в заголовке метода действительно не меняется, но сам массив меняется в методе. Далее используя ту же ссылку на массив, вы уже имеете дело с измененным (отсортированным) массивом.
ARCOS
Уровень 18, Москва, Россия
22 апреля, 11:27
Решил расписать для себя, чтобы понять, как поэтапно происходит сортировка "пузырьком", возможно кому-то будет полезно, чтобы разобраться:
boolean sorted = false; // устанавливаем значение false для переменной sorted
int temp; // вводим переменную в которую будем перекидывать значения из массива
while(!sorted) { // повторяем цикл пока sorted не равно true
    sorted = true; // устанавливаем значение true на тот случай, если if не сработает ни разу.

    for (int i = 0; i < array.length - 1; i++) { // уменьшаем длину массива на 1, чтобы не выходить за пределы массива

        if (array[i] < array[i+1]) { // на первой итерации сравниваем array[0] и array[1], если array[0] меньше, то ->
            //выполняем следующий блок команд:
            temp = array[i]; // присваиваем переменной temp значение array[0]
            array[i] = array[i+1]; // присваиваем array[0] значение array[1] , т.е. меняем их местами: array[1] -> array[0]
            array[i+1] = temp; // присваиваем array[1], значение из temp, т.е. бывшее значение array[0] -> array[1]
            sorted = false; // поскольку условие if = true, мы меняем переменную sorted на false, чтобы цикл сработал еще раз.

        /*
        Цикл for пройдет по длине всего массива и сравнит друг с другом соседние числа, те числа, что окажутся меньше, чем число справа, переместятся на их место, т.е. как бы "всплывут", поэтому этот метод называется пузырьковой сортировкой.
         */
        }
    }
}
P.S. Если где-то ошибся в терминах, не судите строго :)
Popka
Уровень 11, Белгород, Россия
8 августа, 13:59
на самом деле сортировка пузырьком нужна только для понимания логики. Вам этот метод нигде не пригодится. Лучше изучите другие методы сортировки, например "выбором"
Tony
Уровень 18
14 апреля, 10:48
Те кто решит делать через Collections.reverseOrder() c заменой int на Integer - не стоит... работать будет, но валидатор не примет.
Максим "Evengarr" Меднов
Уровень 18, Москва, Россия
23 февраля, 12:59
совет, ни вкоем случае не меняйте тот код, что дается в исходном задании
Alleviata
Уровень 8, Киев, Украина
14 февраля, 19:04
Легко решить пузырьковой сортировкой, только знак изменить в условии сравнения, чтоб меняло местами если левое число МЕНЬШЕ правого, а не больше: https://www.javatpoint.com/bubble-sort-in-java