Набор Алгоритмов

Статья посвящена тому, как обменивать переменные значениями. В статье описан, как классический подход, так и подход без использования дополнительных ячеек памяти. Второй подход работает для переменных, для которых операции сложения и вычитания не приводят к потере точности. Какой способ лучше из них - решать Вам, исходя из случая, какое оборудование у Вас используется, т.к. программирование бывает не только серверов и персональных компьютеров, но и микроконтроллеров, к примеру, для роботизированного конвейера.

Алгоритмы - Обмен значений переменных.

1. Способ обмена переменными с использованием памяти.

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

Для получения представления рассмотрим алгоритм обмена значениями переменных с использованием памяти, он расположен во второй колонке следующей таблицы:

КодКомментарий
1int var1 = 5;var1 = 5
2int var2 = 7;var2 = 7
3...
4int var1_temp = var1;var1_temp = 5
5var1 = var2;var1 = 7
6var2 = var1_temp;var2 = 5

Таблица 1. Способ обмена переменными с использованием памяти.

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

Опишем алгоритм словесно:

2. Способ обмена переменными без использования памяти.

Возможно переполнение типа данных!

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

Для получения представления рассмотрим алгоритм обмена значениями переменных без использования памяти, он расположен во второй колонке следующей таблицы:

КодКомментарий
1int var1 = 5;var1 = 5
2int var2 = 7;var2 = 7
3...
4var1 = var1 + var2;var1 = 12
5var2 = var1 - var2;var2 = 5
6var1 = var1 - var2;var1 = 7

Таблица 2. Способ обмена переменными без использования памяти.

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

Опишем алгоритм словестно:

3. Заключение.

Как видно из алгоритмов, они равны по количеству выполняемых операций, но второй способ (Способ обмена переменными без использования памяти) не требует ячейку памяти, что делает его более оптимизированным. К тому же доступ к оперативной памяти довольно долгий.

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