Реверс масиву, рішення задач з програмування

Пояснення до задачі і алгоритм рішення

При реверсі масиву перший елемент стає останнім, а останній першим; другий - передостаннім, а передостанній - другим; третій елемент йде на місце третього з кінця, а той на місце третього і т. д. Таких пар перестановок треба зробити в два рази менше, ніж довжина масиву, тобто переставляти елементи до тих пір, поки мінливі елементи не зустрінуться в центрі масиву.

Звичайно, переставляти можна також, починаючи з середини масиву і рухаючись до його початку і кінця. Однак вищеописаний спосіб трохи простіше.

Якщо в масиві непарна кількість елементів, то в середині масиву знаходиться один елемент, у якого немає пари і який обмінювати не треба. Якщо ж в масиві парна кількість елементів, то в середині знаходиться пара, яка також повинна обмінятися. У будь-якому випадку кількість обмінів буде дорівнює кількості елементів масиву без остачі ділиться на 2.

Таким чином, реверс масиву відбувається в циклі, кількість ітерацій (проходів) якого дорівнює не більше половини від кількості елементів. У тілі циклу відбувається обмін речовин. Якщо індексація (i) масиву починається з одиниці, а кількість елементів N, то індекс елемента, з яким повинен відбуватися обмін буде знаходитися за формулою N-i + 1. Якщо ж індексація йде з нуля, то протилежний для i елемент знаходиться як N-i-1.

Вихідний код на мові програмування Pascal

const N = 10;
var
a. array # 91; 1. N # 93; of integer;
i. byte;
b. integer;
begin
for i. = 1 to N do
read # 40; a # 91; i # 93; # 41; ;

for i. = 1 to N div 2 do begin
b. = a # 91; i # 93; ;
a # 91; i # 93 ;. = a # 91; N - i + 1 # 93; ;
a # 91; N - i + 1 # 93 ;. = B;
end;

for i. = 1 to N do
write # 40; a # 91; i # 93 ;. '' # 41; ;

Приклад (и) виконання програми на мові Pascal

Схожі статті