Как обменять значения двух переменных без буфера

Вернуться назад

2 мая 2018

Если перед вами встанет задача обменять значения двух числовых переменных a и b между собой, скорее всего, вы сделаете это так:

int buffer = a;
a = b;
b = buffer;

То есть поменять значения одновременно нельзя, ибо одно из них затрётся. Чтобы этого не произошло, мы создаём новую буферную переменную, куда и помещаем на время одно из значений.

А что, если нам нужно обменять значения числовых переменных между собой, не создавая новых переменных?

Такой вопрос любят задавать на собеседованиях, однако ограничение весьма искусственное и в современной практике не встречается. Но программисты прошлого могли на такой операции сэкономить лишний байт памяти. И прибегали они к следующему решению:

a = a + b;
b = a - b;
a = a - b;

Как видите, решение носит чисто арифметический характер, а потому применимо лишь к числовым типам и не зависит от конкретного языка программирования.

Тэги: Java, головоломки.



Добавить комментарий

Ваше имя:
Текст комментария: