Задачка для программистов, которую любят задавать на собеседованиях. Даны две переменные, например, a=4 и b=7. Требуется поменять местами значения этих переменных (то есть должно получиться a=7 и b=4), но при этом нельзя использовать третью переменную. Нужен алгоритм, который легко реализовать на любом языке.
Ответ
И ещё - предложите самый быстрый алгоритм.
update
Первые - 67108864 и Roman Zhmakin.Ответ
Есть несколько вариантов.
С помощью простых арифметических действий, например:
a = a + b;
b = a - b;
a = a - b;
С помощью функции xor (исключающее ИЛИ):
a = a XOR b;
b = a XOR b;
a = a XOR b;
С помощью простых арифметических действий, например:
a = a + b;
b = a - b;
a = a - b;
С помощью функции xor (исключающее ИЛИ):
a = a XOR b;
b = a XOR b;
a = a XOR b;
И ещё - предложите самый быстрый алгоритм.
есть такая гадость как http://en.wikipedia.org/wiki/XOR_swap_algorithm
ОтветитьУдалитьXOR универсальнее, в том смысле что в отличие от суммы (Roman Zhmakin) не зависим от знакового переполнения. Даже для вещественных чисел, если их рассматривать как кусок памяти. Иначе есть косяки даже с ассоциативностью и дистрибутивностью.
УдалитьЕсть такой вариант. А без искл или?
ОтветитьУдалитьЗадача-то достаточно известная:
ОтветитьУдалитьa=a+b
b=a-b
a=a-b
Этот комментарий был удален автором.
Удалитьa=b-a
ОтветитьУдалитьb=b-a
a=b+a