Разворот массива
Разворот массива — это перестановка его элементов так, чтобы первый элемент стал последним, второй — предпоследним и так далее. Для этого попарно меняют местами элементы с симметричными индексами.
Перед выполнением разворота важно понимать, как нумеруются элементы: индексы массива обычно начинаются с нуля. Если в массиве \(n\) элементов, последний индекс равен \(n-1\). Поэтому для элемента с индексом \(i\) симметричный ему элемент имеет индекс \(n-1-i\).
Достаточно пройти только первую половину массива. После обмена элементов первой и последней половин каждый элемент уже оказывается на нужном месте. Если продолжить цикл до конца, пары будут обменены повторно, и массив вернётся к исходному порядку. Центральный элемент массива нечётной длины менять не нужно.
Пусть дан массив \([4, 7, 1, 9, 2]\). Обмениваем элементы с индексами \(0\) и \(4\): получаем \([2, 7, 1, 9, 4]\). Затем меняем индексы \(1\) и \(3\): получаем \([2, 9, 1, 7, 4]\). Индекс \(2\) — центральный, поэтому результат: \([2, 9, 1, 7, 4]\).
a = [4, 7, 1, 9, 2] n = len(a) for i in range(n // 2): j = n - 1 - i a[i], a[j] = a[j], a[i] print(a)
Разворот не сравнивает значения и не упорядочивает их по возрастанию или убыванию. Он только меняет порядок элементов на противоположный. Например, разворот массива \([3, 1, 5]\) даст \([5, 1, 3]\), а не результат сортировки.
Какой индекс является симметричным для элемента с индексом \(i\) в массиве из \(n\) элементов?
Главное
- Разворот меняет порядок элементов массива на обратный.
- Элементы с индексами \(i\) и \(n-1-i\) обмениваются местами.
- Цикл выполняется только для первой половины массива; это не сортировка выбором и не массив как структура данных.