Я объясню, что делает этот код:
if(first.compareTo(second)>0) {
temp = second;
second = first;
first = temp;
}
if(second.compareTo(third) > 0) {
temp = third;
third = second;
second = temp;
}
if(first.compareTo(second) > 0) {
temp = second;
second = first;
first = temp;
}
Допустим, first
содержит C
, second
содержит B
и third
содержит A
.
Сначала first
, second
и third
не отсортированы.
(сначала if
) Если город в first
должен идти после города в second
, поменяйте их местами. Как мы их поменяем? Сначала мы копируем секунду во временную переменную temp
, помещаем все, что находится в first
, в second
, а затем помещаем все, что в temp
, в first
. Это проще визуализировать, если вы рассматриваете переменные как блоки, а значения, которые вы заменяете как шары.
После первого запуска, если first
содержит B
, second
содержит C
и third
содержит A
(секунда if
) Если second
следует после third
, поменяйте их местами. Теперь first
содержит B
, second
содержит A
и third
содержит C
.
Теперь вы должны заметить, что запустив первые два оператора if, мы нашли, что должно быть в third
. Теперь нам просто нужно выяснить, отсортированы ли first
и second
, что делается в третьем операторе if.
Почему третий оператор if делает то же самое, что и первый оператор if?
У них одинаковый код, но третий if запускается после первого и второго if, если к этому времени first
и second
будут иметь разные значения.