Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка_1_05_ВНУ.doc
Скачиваний:
2
Добавлен:
08.09.2019
Размер:
1.71 Mб
Скачать

Впорядкування вставками

Переглядаючи масив a[1], a[2], … a[n], починаючи з другого, кожний новий і-ий елемент розташовуємо (вставляємо) на відповідне місце у вже впорядковану частину масиву a[1], a[2], … a[i-1]. Для цього необхідно:

а) взяти і-ий невпорядкований елемент і запам’ятати його з допомогою додаткової змінної B;

б) знайти номер j елемента впорядкованої частини масиву, під яким необхідно записати взятий невпорядкований елемент;

в) зсунути елементи від j-го до і-го вправо на одну позицію, звільнивши місце під взятий елемент;

г) встановити взятий і-й елемент на місце j-го.

Всього необхідно зробити N-1 крок.

Програма впорядкування масиву вставками.

program VporVstv;

uses

Crt;

var

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

b:real;

i,j,k,n:integer;

begin

ClrScr;

Writeln('Введіть довжину масиву n<=20');

Readln(n);

Writeln('Введіть поелементно масив a:');

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

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

For i:=2 to n do

begin

b:=a[i]; {взяття і-го елемента}

j:=1;

{пошук номера j вставки}

while b>a[j] do j:=j+1;

if j<i then

begin

{зсув елементів вправо}

for k:=i downto j+1 do a[k]:=a[k-1];

{вставка і-го елемента}

a[j]:=b;

end;

end;

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

Writeln('Впорядкований масив');

For i:=1 to n do Write(a[i]:8:2);

Writeln;

Readln;

end.

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

Задача зливання впорядкованих масивів 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.