Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kospekt_lektsy_programmirovanie.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
462.78 Кб
Скачать

3.1. Упорядкування вставлянням

Масив поділяється на дві частини: упорядковану і неупорядковану. Елементи з неупорядкованої частини по черзі вибираються і вставляються в упорядковану частину, не порушуючи при цьому упорядкованості елементів. На початку роботи алгоритму до впорядкованої частини масиву відносять тільки перший елемент, а до невпорядкованої — всі інші елементи. Таким чином, потрібно (n-1) раз (n – розмірність масиву) виконати дії:

  • вибрати i-й елемент із невпорядкованої частини і зберегти в допоміжній змінній;

  • знайти позицію j у впорядкованій частині масиву, в якій вибраний елемент не порушуватиме впорядкованості;

  • зсув елементів масиву від (i-1)-го до (j-1)-го вправо для звільнення знайденої позиції;

  • вставити вибраний елемент у знайдену j – ту позицію.

Const MaxN =20;

Type TMas= array [1..MaxN] of real;

Var A: TMas; T: real; N, I, j: integer;

Begin

Write (‘Введіть кількість елементів масиву :’); Readln (N);

For i := 1 to N do begin Write (‘A[‘,i,’]=’); Readln (A[i]); end;

Writeln(‘Масив до впорядкування: ’);

For i := 1 to N do Write (A[i], ‘ ‘); Writeln;

For i:=2 to N do

Begin T:=A[i]; j:=1;

While T>A[j] do j:= j +1;

For k:=i – 1 downto j do A[k+1] := A[k]; A[j]:=T;

End;

Writeln (‘Упорядкований масив: ’);

For i := 1 to N do Write(A[i],’ ‘); Writeln;

End.

3.2. Упорядкування вибором

Знаходимо найменший елемент масиву на інтервалі від 1-го елемента до n-го (останнього) елемента і переставляємо його місцями з першим елементом. На другому кроці знаходимо найменший елемент масиву на інтервалі від 2-го до n-го елемента і переставляємо його місцями з другим елементом. І так далі для всіх елементів до (n-1)– го.

Const MaxN =20;

Type TMas= array [1..MaxN] of real;

Var A: TMas; T: real; N,Nmin, I, j: integer;

Begin

Write (‘Введіть кількість елементів масиву :’); Readln (N);

For i := 1 to N do begin Write (‘A[‘,i,’]=’); Readln (A[i]); end;

Writeln(‘Масив до впорядкування: ’);

For i := 1 to N do Write (A[i], ‘ ‘); Writeln;

For i:=1 to N-1 do

Begin Nmin :=i;

For j:= i+1 to N do

If A[Nmin] > A[j] then Nmin :=j;

T := A[Nmin]; A[Nmin] := A[i]; A[i]:=T;

End;

Writeln (‘Упорядкований масив: ’);

For i := 1 to N do Write(A[i],’ ‘); Writeln;

Readln;

End.

3.3. Упорядкування обміном

Зліва направо по черзі порівнюються два сусідні елементи (перший з другим, другий з третім і т.д.), і якщо їх взаємне розміщення не відповідає критерію упорядкування, то вони переставляються місцями. Після першого перегляду на останній n-й позиції масиву буде знаходитися найбільший елемент. Тому другий перегляд виконується до (n-1)-го елемента. Третій — до (n-2)-го, і т.д. Всього потрібний (n-1)перегляд.

Const MaxN =20;

Type TMas= array [1..MaxN] of real;

Var A: TMas; T: real; N,Nmin, I, j: integer;

Begin

Write (‘Введіть кількість елементів масиву :’); Readln (N);

For i := 1 to N do begin Write (‘A[‘,i,’]=’); Readln (A[i]); end;

Writeln(‘Масив до впорядкування: ’);

For i := 1 to N do Write (A[i], ‘ ‘); Writeln;

For i:= N downto 2 do

For j:=1 to i-1 do

If A[j] > A[j+1] then

begin T:= A[j]; A[j]:=A[j+1]; A[j+1]:= T; end;

Writeln (‘Упорядкований масив: ’);

For i := 1 to N do Write(A[i],’ ‘); Writeln;

Readln;

End.

Контрольні питання

  1. В чому полягає суть пошуку елемента у масиві?

  2. Що таке лінійний пошук?

  3. В чому полягає суть алгоритму пошуку мінімального елемента у масиві?

  4. В чому полягає суть алгоритму бінарного пошуку?

  5. Що означає поняття упорядкування масиву?

  6. З якою метою виконують сортування масиву?

  7. В чому полягає суть алгоритму упорядкування вставлянням?

  8. В чому полягає суть алгоритму упорядкування вибором?

  9. В чому полягає суть алгоритму упорядкування обміном?

Лекція № 17 Підпрограми

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]