Страницы

Поиск по вопросам

суббота, 23 марта 2019 г.

Как отсортировать 3 элемента?

Недавно начал учить Java и в качестве практической задачи нужно написать приложение, которое должна сравнивать 3 возраста и выдавать результат, кто самый старший, младший и между ними.
Так же была дана "методичка" в которой изложена суть логики всего этого. Но или я дурак, или лыжи не едут, но именно такое решение задачи мне просто не дается. Я просто путаюсь что с чем уже сравнивал и не могу двинуться дальше.
Я не прошу решения этой задачи, просто подскажите - какие еще варианты решения этой задачи можно использовать ? Метод решения, на котором настаивает учитель мне не подходит.
public class Loader { public static void main(String[] args) { Integer damirAge = 30; Integer tolanAge = 25; Integer uraAge = 55; Integer oldest; Integer youngest; Integer middle;
if (damirAge >= tolanAge && damirAge >= uraAge) oldest = damirAge; else if (tolanAge >= damirAge && tolanAge >= uraAge) oldest = tolanAge; else oldest = uraAge;
if (damirAge <= tolanAge && damirAge <= uraAge) youngest = damirAge; else if (tolanAge <= damirAge && tolanAge <= uraAge) youngest = tolanAge; else youngest = uraAge;
if (damirAge >= tolanAge && damirAge <= uraAge) middle = damirAge;
else if (tolanAge >= uraAge && tolanAge <= damirAge) middle = tolanAge; else middle = uraAge;
System.out.println("Most young " + youngest); System.out.println("Middle " + middle); System.out.println("Most old " + oldest); } }


Ответ

Думаю, что задание предполагало всё-таки освоение логики вложенных операторов if.
По анализу математической подоплёки: Возможных результатов (перестановок) может быть 6 (если не учитывать случаи равенства). На получение 6 исходов нужно по меньшей мере 2.58 бита информации, т.е. эта задача требует в идеале выполнения не более трёх сравнений. Это в данном случае реализуемо - сравнений будет 2 или 3 (в среднем 2.667):
if A > B: if A > C: if B > C: A B C else: A C B else: C A B else: if B > C: if C > A: B C A else: B A C else: C B A

Комментариев нет:

Отправить комментарий