Для решения задачи необходимо переставить элементы массива в обратном порядке, при этом не используя дополнительный массив. Это можно сделать, меняя местами элементы, начиная с концов массива и двигаясь к его середине. Пример программы на языке Python:
def reverse_array(arr):
left = 0
right = len(arr) - 1
while left < right:
# Меняем местами элементы
arr[left], arr[right] = arr[right], arr[left]
# Сдвигаем индексы к центру
left += 1
right -= 1
# Чтение входных данных
n = int(input("Введите количество элементов в массиве: "))
arr = list(map(int, input("Введите элементы массива через пробел: ").split()))
# Проверка, что количество введенных элементов соответствует n
if len(arr) != n:
print("Количество элементов не соответствует заявленному числу N.")
else:
# Переворачиваем массив
reverse_array(arr)
# Выводим результат
print(" ".join(map(str, arr)))
Пояснение работы программы:
Чтение данных: Сначала читается количество элементов n
, затем сам массив arr
.
Проверка длины массива: Убедимся, что пользователь ввел именно n
элементов. Если это не так, выводим сообщение об ошибке.
Инвертирование массива:
- Используем два указателя:
left
и right
, которые изначально указывают на первый и последний элементы массива.
- В цикле
while
, пока left
меньше right
, выполняем обмен значений между arr[left]
и arr[right]
.
- Затем увеличиваем
left
и уменьшаем right
, чтобы двигаться к середине массива.
- Это позволяет нам развернуть массив без использования дополнительной памяти для хранения другого массива.
Вывод результатов: После завершения цикла массив изменяется на месте и выводится в развернутом виде.
Такой подход имеет временную сложность (O(N)) и использует (O(1)) дополнительной памяти, что делает его эффективным для данной задачи.