logo
методичка_1_05_ВНУ

Зливання впорядкованих масивів

Задача зливання впорядкованих масивів a та b різної довжини полягає в тому, щоб з їх елементів сформувати третій впорядкований масив c, без додаткового впорядкування останнього.

Нехай маємо масиви a[1], a[2], … a[n] та b[1], b[2], …, b[n]. Необхідно сформувати новий впорядкований масив c довжиною m+n. Для цього будемо порівнювати між собою пари елементів a[i] та b[j] і передавати в третій масив с менший по значенню елемент. Після цього змінюємо індекс масиву, елемент якого використали, і знову виконуємо порівняння нової пари елементів. Цей процес повторюємо до тих пір, поки один з масивів не буде повністю вичерпано. Залишається приєднати до масиву c залишок того масиву, елементи якого використані не повністю.

Програма зливання впорядкованих масивів.

program ZlyvMas;

uses

Crt;

Const

m=5;n=10;p=15;

var

a:array[1..m] of real;

b:array[1..n] of real;

c:array[1..p] of real;

i,j,k:integer;

begin

ClrScr;

Writeln('Введіть ',m:2,' елементів ',

'впорядкованого масиву a:');

For i:=1 to m do Read(a[i]);

Readln;

Writeln('Введіть ',n:2,' елементів ',

'впорядкованого масиву b:');

For j:=1 to n do Read(b[j]);

Readln;

{Початок реалізації методу}

i:=1; j:=1; k:=0;

While (i<=m)and(j<=n) do

begin

k:=k+1;

if a[i]<b[j]

then begin c[k]:=a[i]; i:=i+1 end

else begin c[k]:=b[j]; j:=j+1 end;

end;

{Приєднання до масиву С залишкових

елементів масиву а}

While i<=m do

begin

k:=k+1;

c[k]:=a[i];

i:=i+1

end;

{Приєднання до масиву С залишкових

елементів масиву b}

While j<=n do

begin

k:=k+1;

c[k]:=b[j];

j:=j+1

end;

{Кінець реалізації методу}

Writeln('Результуючий масив');

For k:=1 to m+n do Write(c[k]:8:2);

Writeln;

Readln;

end.