Пусть нам дан массив А = /1, 2, 3, 4, 5, 6/. В результате выполнения операции инверсии получим массив А = /6, 5, 4, 3, 2, 1/. Обмен элементов необходимо производить в цикле FOR, конечное значение параметра этого цикла равно количеству пар элементов, подлежащих обмену. Действительно, в нашем случае для достижения требуемого результата необходимо переставить местами A[1] и A[6], A[2] и A[5], A[3] и A[4] элементы, что соответствует К = 3 парам. Подсчитать количество пар, между которыми необходимо произвести обмен можно следующим образом: K= N DIV 2, где N – количество элементов массива, а DIV – математическая операция целочисленного деления (нельзя использовать вещественное деление /, так как параметр цикла FORК должен быть целым числом). На рис. 15 приведена схема обмена между элементами произвольной пары A[1] и A[6].
A[1] А[6]
Шаг 2
V
Шаг 1 Шаг 3
Рис. 15
Переменная V позволяет сохранить значения элемента массива A[1] при копировании в эту ячейку значения A[6]. Аналогично происходит обмен между другими парами. Формула обмена элементов выглядит следующим образом: A[i] A[N+1-i]. Действительно, при N = 6 имеем:
i = 1 обмен между A[1] и A [6] ( 6+1-1= 6);
i = 2 обмен между A[2] и A [5] ( 6+1-2= 5);
i = 3 обмен между A[3] и A [4] ( 6+1-3= 4).
Блок-схема алгоритма инверсии массива приведена на рис. 16. Фрагмент программы приводится ниже.
…
K := N DIV 2;
for i :=1 to K do
Begin
V := A[i];
A[i] := A[N+1-i];
A[N+1-i] := V;
end;
… Рис. 16