UML EditorОткрыть редактор

Задачи / Обработка массивов / Переворот (реверс) массива

Переворот (реверс) массива: блок-схема и алгоритм

Меняем местами первый и последний элементы, затем второй и предпоследний и так далее до середины. Дополнительный массив не нужен.

Блок-схема: Переворот (реверс) массива

Алгоритм по шагам

  1. Ввести n и массив a.
  2. Для i от 1 до n div 2 поменять местами a[i] и a[n − i + 1].
  3. Вывести массив.

Открыть блок-схему в редакторе

Пример работы

Входa = [1, 2, 3, 4, 5]
Шаг 1i = 1: обмен a[1] и a[5] → [5, 2, 3, 4, 1]
Шаг 2i = 2: обмен a[2] и a[4] → [5, 4, 3, 2, 1]
Шаг 3n div 2 = 2 — цикл закончен, средний элемент на месте
Результат5 4 3 2 1

Решение на Python

n = int(input())
a = list(map(int, input().split()))
for i in range(n // 2):
    a[i], a[n - 1 - i] = a[n - 1 - i], a[i]
print(*a)

Решение на Pascal

var a: array[1..100] of integer;
    n, i, t: integer;
begin
  readln(n);
  for i := 1 to n do read(a[i]);
  for i := 1 to n div 2 do
  begin
    t := a[i];
    a[i] := a[n - i + 1];
    a[n - i + 1] := t;
  end;
  for i := 1 to n do write(a[i], ' ');
end.

Код блок-схемы

Схема выше нарисована по этому псевдокоду. Скопируйте его в редактор блок-схем или нажмите «Открыть блок-схему в редакторе».

блок-схема: Переворот массива
начало
ввод n, массив a[1..n]
для i от 1 до n div 2
    t = a[i]
    a[i] = a[n − i + 1]
    a[n − i + 1] = t
вывод массив a
конец

Сложность

O(n) — n/2 обменов, память O(1).

Частые ошибки

  • Идти циклом до n, а не до n div 2: массив перевернётся дважды и вернётся в исходный вид.
  • Обменивать без вспомогательной переменной t — одно из значений потеряется.
  • Ошибиться в индексе пары: для нумерации с 1 это n − i + 1, с 0 — n − 1 − i.

Похожие задачи

Обозначения фигур и синтаксис кода блок-схем — в справочнике: блок-схема по ГОСТ 19.701. Все задачи.