Сортировка трех чисел

  • 8
  • Недоступна
На планете Линейный Хаос живут изоморфы. Говорят, именно они изобрели методы сортировки и у них в голове все чрезвычайно упорядочено. Визы на их планету они выдают только тем, кто знает не менее 7 методов сортировки. Сделаем первый шаг к Линейному Хаосу: упорядочим три введенные с клавиатуры числа по убыванию, а затем выведем их на экран.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (551)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
p90x
Уровень 7
9 марта, 16:51
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int a = Integer.parseInt(reader.readLine()); int b = Integer.parseInt(reader.readLine()); int c = Integer.parseInt(reader.readLine()); int max = Math.max(a, b); max = Math.max(max, c); System.out.print(max+" "); int min = Math.min(a, b); min = Math.min(min, c); if ((a < max) && (a > min)) { System.out.print(a); }else if ((b < max)&&(b > min)){ System.out.print(b); }else { System.out.print(c); } System.out.print(" "+min); } } компилятор не ест. Пишет что должно быть в порядке убывания. Кто видит что со мной не так?))
John
Уровень 7
12 апреля, 18:04
Разобрался? На каком тесте валится? Так-то вроде все бьется, даже для одинаковых значений.
p90x
Уровень 7
12 апреля, 20:52
неа, решил по другому( по дурацки)
Николай
Уровень 5
25 февраля, 10:38
Столько разных вариантов в обсуждении. Мне пришло в голову такое решение:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int a = Integer.parseInt(reader.readLine());
        int b = Integer.parseInt(reader.readLine());
        int c = Integer.parseInt(reader.readLine());
        int min = ((a <= b) && (a <= c)) ? a : (b <= c) ? b : c;
        int sr = ((a <= b) && (a >= c)) || ((a >= b) && (a <= c)) ? a : (b >= a) && (b <= c) ? b : c;
        int max = ((a >= c) && (a >= b)) ? a : (b >= c) ? b : c;
        System.out.println(max + " " + sr + " " + min);
Вот только понять не могу - какое лучшее решение?
Denys Sukhoivan
Уровень 26
Expert
14 октября 2022, 11:13
Посидев немного над задачей и пописав циклы и перепробывав Math.min.max ничего не получилось. Погуглил и нашел интересное использование Math, т.к. у меня был вопрос как сравнить сразу 3 значения. Оказываеться Math можно использовать еще раз внутри скобки(условия) и сравнить сначала 2 числа и третье. Чтобы не спойлить и у вас была возможность пописать и разобратся ))) Решил задачу в 3 страки: min; max; middle; С 8 попытки)))
Оксана
Уровень 5
10 августа 2022, 10:58
можно обойтись и без готового решения по сортировке класса Math. как понимаю, на первых задачах так и надо было сделать. Мне помог ввод дополнительной переменной, которой я присвоила значение первого или второго числа, в зависмости от того, какое больше. Потом эту доп переменную использовала при сравнении с 3 введенным числом. Вроде как это помогло, чтобы if -ов было меньше. и работает на разных вариантов тестовых данных
int tmp;
tmp = (first > second) ? first : second;
Vladislav Tsar
Уровень 22
22 апреля 2022, 17:37
/* Комментарий удален */
Игорь
Уровень 29
21 мая 2022, 11:34
вы читали правила Джавы раш что нельзя выкладывать готовый результат в комментариях? идите умничайте в задачах вашего 14 уровня
Ruslan Gabzalilov
Уровень 6
18 марта 2022, 09:12
В условие добавить бы пункт "Если числа равны". Было бы меньше ошибок.
10 марта 2022, 12:45
Вводим переменную max (через Math.max считаем максимум), аналогично минимум, затем среднее (все числа сложить и вычесть min и max), далее просто выводим их. С тремя числами сработает, но если добавить ещё числа - нужно что-то другое (именно сортировка). Пока мозги и так подкипают, но понятно, что нужно подучить.
Александр
Уровень 8
11 января 2022, 20:09
Можно сделать с помощью Math в одну строку, вычисляем минимальное, среднее и максимальное: int a = Integer.parseInt(reader.readLine()); int b = Integer.parseInt(reader.readLine()); int c = Integer.parseInt(reader.readLine()); System.out.println(Math.max(a,Math.max(c,b))+ " " + (a+b+c-Math.max(a,Math.max(c,b))-Math.min(a,Math.min(c,b))) + " " + Math.min(a,Math.min(c,b)));
Степан
Уровень 5
22 января 2022, 05:40
У меня очень похожее решение вышло спустя 2 часа размышлений)
Juli
Уровень 9
17 ноября 2021, 12:31
Ха, с первой попытки, но перед этим листов 5 переписанных значение А4 😂😂😂. Решила не изобретать велосипед и отточить навыки if/else, правильно ли или надо было поломать мозг?
Tony
Уровень 5
18 сентября 2021, 16:48
Я решил воспользоваться Гуглом и поискал сортировку массивов, собственно вот, что получилось:
Обязательно не забудьте импортировать библиотеку, для работы с массивами - import java.util.*;

... Здесь обычное считывание с клавиатуры...

        String s = ""; // Создаем пустую строку
        Integer[] nums = new Integer[] { a, b, c}; // Создаем массив, в данном случае важно НЕ примитив (int). С примитивом не работает reverseOrder(), на сколько я понял :)
        Arrays.sort(nums,Collections.reverseOrder()); // Сортируем массив, второй параметр - обратный сортинг от большего к меньшему.
        for (int i : nums){   //foreach цикл для перебора массива
            s += i + " ";  // На каждой итерации производим конкатенацию строки.
        }
        System.out.println(s);   // Выводим строку в консоль.
13 ноября 2021, 20:27
какой вы хитренький!)) элегантно!
Arsik Osipov
Уровень 4
7 июня 2022, 20:06
У меня решение получилось таким
Какой-то код...

        ArrayList<Integer> list = new ArrayList<Integer>();
        Collections.addAll(list, a ,b, c);
        Collections.sort(list);
        Collections.reverse(list);
        for (int i : list) {
            s += i + " ";
        }
            System.out.println(s);
    }
}
Максим
Уровень 14
11 июня 2022, 12:47
Это всё понятно. А вы через if попробуйте решить. Просто, ради интереса. Если вы этого не делали. то кипение мозгов вам обеспечено!🙂
8 ноября 2022, 19:36
я вот тоже погуглил и вот что вышло
public class Solution {
    public static void main(String[] args) throws Exception {
        //напишите тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        int [] mas = new int[3];
        for (int i = 0; i<mas.length; i++)
        mas[i] = Integer.parseInt(reader.readLine());
        Arrays.sort(mas);
        for (int a: mas)
            System.out.print(a+" ");
  }
}