Требуется програмист со знанием алгоритмов

Сообщение
Автор
Аватара пользователя
WingRabbit
Сообщения: 23805
Зарегистрирован: 19 сен 2011, 18:35
Откуда: Москва -> Дубна -> Торонто

Re: Требуется програмист со знанием алгоритмов

#51 Сообщение WingRabbit » 12 ноя 2014, 13:17

Ega23 писал(а):
WingRabbit писал(а):Давайте еще алгоритмы пощелкаем, а?
Есть массив INT. Нужно перевернуть его (задом наперёд). Буферные переменные использовать низя..
a=a+b;
b=a-b;
a=a-b;
ну или в контексте данной задачи

Код: Выделить всё

for(int i=0; i<arr.lenth/2;i++)
{
    arr[i] = arr[i] + arr[arr.length-i];
    arr[arr.length-i] = arr[i]-arr[arr.length-i];
    arr[i]=arr[i]-arr[arr.length-i];
}

Аватара пользователя
SaaBaka
Сообщения: 4547
Зарегистрирован: 14 апр 2008, 14:54
Откуда: Laniakea Supercluster

Re: Требуется програмист со знанием алгоритмов

#52 Сообщение SaaBaka » 12 ноя 2014, 13:18

Ega23
Для обмена значений без буферной переменной обычно используется XOR swap: a=a^b; b=a^b; a=a^b.

Аватара пользователя
WingRabbit
Сообщения: 23805
Зарегистрирован: 19 сен 2011, 18:35
Откуда: Москва -> Дубна -> Торонто

Re: Требуется програмист со знанием алгоритмов

#53 Сообщение WingRabbit » 12 ноя 2014, 13:19

А, ну и должно быть arr.length-i-1, а то аут оф рейндж будет.

Аватара пользователя
Ega23
Сообщения: 18260
Зарегистрирован: 22 окт 2008, 09:01

Re: Требуется програмист со знанием алгоритмов

#54 Сообщение Ega23 » 12 ноя 2014, 13:36

WingRabbit писал(а):a=a+b;
И тот самый Rage Check Еггог. :D

Аватара пользователя
Ega23
Сообщения: 18260
Зарегистрирован: 22 окт 2008, 09:01

Re: Требуется програмист со знанием алгоритмов

#55 Сообщение Ega23 » 12 ноя 2014, 13:37

SaaBaka писал(а):Ega23
Для обмена значений без буферной переменной обычно используется XOR swap: a=a^b; b=a^b; a=a^b.
Я в курсе.

Аватара пользователя
WingRabbit
Сообщения: 23805
Зарегистрирован: 19 сен 2011, 18:35
Откуда: Москва -> Дубна -> Торонто

Re: Требуется програмист со знанием алгоритмов

#56 Сообщение WingRabbit » 12 ноя 2014, 13:44

Ega23 писал(а):
WingRabbit писал(а):a=a+b;
И тот самый Rage Check Еггог. :D
Ну да, осознал)

Ответить

Вернуться в «Программирование»