Обмен элементов массива
Обмен элементов массива — это перестановка значений двух элементов: значение из одной ячейки записывают в другую, а прежнее значение второй ячейки — в первую. Чтобы не потерять одно из значений, используют временную переменную.
Здесь \(a\) — массив, \(i\) и \(j\) — индексы обмениваемых элементов, а \(t\) — временная переменная. Индексы должны быть допустимыми: например, для массива из \(n\) элементов это обычно \(0 \le i,j < n\) в Python и C++ или \(1 \le i,j \le n\) в Pascal.
Как выполняется обмен
- Сохранить значение \(a[i]\) в переменной \(t\).
- Записать значение \(a[j]\) в \(a[i]\).
- Записать значение \(t\) в \(a[j]\).
Пусть \(a = [4, 7, 2]\), нужно поменять местами элементы с индексами 0 и 2. После выполнения t = a[0], a[0] = a[2], a[2] = t массив станет \([2, 7, 4]\). Фрагмент на Python:
```python
t = a[i]
a[i] = a[j]
a[j] = t
```
Что получится после обмена элементов с индексами 1 и 3 в массиве \([5, 8, 2, 6]\)?
Нельзя сразу выполнить a[i] = a[j], а затем попытаться записать a[j] = a[i]: после первой строки исходное значение \(a[i]\) уже потеряно, и оба элемента могут стать равными. В сортировке массива такой обмен часто используется для перестановки элементов, поэтому ошибка может повлиять на весь результат.
Если \(i=j\), обмен ничего не изменит: элемент сначала сохраняется, затем записывается обратно. Повторяя обмены в нужном порядке, можно выполнять сортировку по возрастанию или другие алгоритмы обработки массива.
Главное
- Обмен двух элементов меняет только их значения местами.
- Надёжный способ — три присваивания с временной переменной.
- Запись одного значения поверх другого без временного хранения приводит к потере данных.