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

  • 5
  • Недоступна
Упорядоченые изоморфы с планеты Линейный Хаос любят сортировать и принимают в свои ряды тех, кто хорошо умеет это делать. Вы можете возразить, что не собираетесь иметь с ними дело. Не получится: изоморфы часто проводят собеседования в ИТ-компании. Не игнорируем: пишем программу, которая вводит с клавиатуры 20 чисел и выводит их в убывающем порядке.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (357)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Абдурахман
Уровень 12
6 марта, 16:42
Алгоритм сортировки пузырьком 1) создаем бесконечный цикл while с флажком
boolean isSorted = false;
while(!isSorted){
    isSorted = true              // в конце поймете
}
2) внутри создаем цикл for чтобы сравнивать элементы нашего массива
for(int i = 1; i < massiv.length; i++){}
3) если первый элемент [i] больше чем нолевой элемент [i - 1] то меняем их местами с помощью временного переменного
int template = list[i];
list[i] = list[i - 1]
list[i - 1] = template;
isSorted = false;
Сортировка пузырьком требует несколько десятков итераций(циклов) чтобы массив полностью отсортировался. А как мы поймем что он отсортирован? Верно если элементы массива не меняются местами значит он полностью отсортирован и флажок в конце isSorted = false не сработает а флажок вначале цикла while isSorted = true сработает и цикл остановится
Денис
Уровень 14, Пермь, Россия
1 февраля, 11:19
Можно же по человечески решить через Collections.reverseOrder(), но нет давайте снова пузырьком.
Balthazar Java Developer
23 июня 2021, 13:35
Решил с 4 попытки только из-за того, что перепутал строку
sort(array);
с
Arrays.sort(array);
Думал, вроде массив отсортирован, а выводит почему-то неправильно
piersto
Уровень 17, Montreal, Canada
21 июня 2021, 00:39
Пипец издевательство, а не задача! Решить её на 7-м уровне - нереально. Я с 14-го её ели решил, да и то коряво, до ужаса. Умножил сначала весь массив на -1. Код сортировки нагуглил. Опять умножил всё на минус один. Как правильное решение JR даёт эту самую сортировку (пузырьком), только с изменёнными знаками. Вот тут можно посмотреть прямую. http://study-java.ru/uroki-java/urok-11-sortirovka-massiva/
Artamon Khakimov
Уровень 35, Казань, Россия
24 июля 2021, 17:55
Я покапался в интернете минут 30. Понял алгоритм и записал его. Хотя не мне судить, я её вообще пропустил, когда уровень был 7.
Sergey
Уровень 12, Анапа, Россия
31 октября 2021, 20:52
Я часа 3 думал. не знаю какой метод у меня получился но я ее сделал)))
YesOn
Уровень 8, Томск, Россия
18 января, 04:57
Уровень 7, Лекция 2 в самом конеце лекции есть ссылка на статью про массивы в строке: " — Ага. Хорошо, что ты сам догадался. Обрати внимание, тут присутствует дополнительный объект – массив из 10 ячеек." Эта ссылка ведёт на статью про массивы, где среди прочего даны ссылки на статьи по алгоритмам сортировки. Там конечно можно зависнуть на несколько дней, ато и недель в чтении и программировании, но материал крайне полезный!👍
Polina
Уровень 9, Москва
31 мая 2021, 12:12
Блин, мне так тяжело даются алгоритмы(( Не смогла написать свою сортировку, решила чрез стандартный Arrays.sort(). может кто-нибудь посоветует что-нибудь по алгоритмам(кроме Кормена). Искала много информации в интернете, но всегда полезно узнать что-то напрямую от людей.
Vlad
Уровень 9
2 июня 2021, 15:37
Всё приходит с практикой, не волнуйся :)
piersto
Уровень 17, Montreal, Canada
21 июня 2021, 00:54
Грокаем Алгоритмы. Иллюстрированное пособие для программистов и любопытствующих Автор: Бхаргава А.
Alexey
Уровень 18, Ярославль, Россия
5 мая 2021, 05:03
Вадим
Уровень 23, Москва
5 мая 2021, 15:01
Так же сделал. Пришлось городить присвоение исходному массиву правильно отсортированного из-за невозможности изменения возвращаемого значения метода (с void на int[])
Андрей Dungeon Master
4 мая 2021, 12:26
Все пишут про пузырьковую сортировку, но с помощью сортировки выбором тоже удобно решать эту задачу: http://study-java.ru/uroki-java/urok-11-sortirovka-massiva/
hidden #2019093
Уровень 14
3 мая 2021, 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 мая 2021, 14:52
Что же тут непонятного, вы ж его сами в методе отсортировали:)? Ссылка в заголовке метода действительно не меняется, но сам массив меняется в методе. Далее используя ту же ссылку на массив, вы уже имеете дело с измененным (отсортированным) массивом.
ARCOS
Уровень 19, Москва, Россия
22 апреля 2021, 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 августа 2021, 13:59
на самом деле сортировка пузырьком нужна только для понимания логики. Вам этот метод нигде не пригодится. Лучше изучите другие методы сортировки, например "выбором"
Tony
Уровень 18
14 апреля 2021, 10:48
Те кто решит делать через Collections.reverseOrder() c заменой int на Integer - не стоит... работать будет, но валидатор не примет.