
- •Завдання (інструкційна картка) для лабораторної роботи
- •Інструкційна картка лабораторного заняття № 6
- •Загальні відомості з теми
- •1. Сортування масиву
- •1.1. Сортування методом вставки
- •1.2. Сортування методом вибору
- •1.3. Сортування методом обміну
- •Зміст роботи
- •Індивідуальні завдання:
- •Приклад задачі сортування одновимірного масиву методом вставки
- •Лістинг програми:
- •Приклад задачі сортування одновимірного масиву методом вибору
- •Лістинг програми:
- •Приклад задачі сортування одновимірного масиву методом обміну
- •Лістинг програми:
- •Контрольні питання
Приклад задачі сортування одновимірного масиву методом вставки
Підмасив, що містить елементи з другого до останнього, вважати невідсортованою частиною. Поки ця частина не стане порожньою, виконувати такі дії:
Зберегти перший елемент невідсортованого підмасиву в допоміжній змінній.
Визначити позицію вставки збереженого елемента у масив. Для цього дотримуватися перелічених далі вказівок:
Вважати перший елемент масиву поточним.
Доки елемент для вставки більше за поточний, збільшувати індекс поточного елемента.
Вставити збережений на кроці 1 елемент на знайдену позицію вставки, зсунувши на одну позицію вправо решту відсортованої частини.
Пересунути початок невідсортованої частини на одну позицію вправо.
Лістинг програми:
program ex6_1; {сортування вставкою}
uses crt;
var n,i,j,k:integer; {кількість та індекси елементів}
а:аrrау[1..10] of integer;
tmp:integer; {елемент, що вставляється у відсортовану частину масиву}
begin
clrscr;
randomize; {ініціалізувати генератор випадкових чисел}
writeln(‘insertion sort’);
writeln('enter number of the components (<=10)');
readln(n); {ввести кількість елементів масиву}
for i:=1 to n do {генерувати масив}
a[i]:=random(30);
writeln('generated array');
for і:=1 to n do {вивести згенерований масив}
write(a[i].' ');
writeln;
writeln(‘sort process’);
for i:=2 to n do {сортувати методом вставки}
begin {і – початок невідсортованого підмасиву}
tmp:=a[i]; {вибрати елемент для вставки}
j:=l; {цикл пошуку позиції вставки}
while tmp>a[j] do {якщо елемент, що вставляється.}
j:=j+l; {менший або рівний поточному, то j фіксує позицію вставки}
for k:=i-l downto j do {зсунути вправо елементи}
a[k+l]:=a[k]; {невідсортованої частини}
a[j]:=tmp; {вставка вибраного елемента у позицію j}
for k:=l to n do {виведення проміжних результатів}
write(a[k],' ');
writeln;
end;
writeln('sorted array');
for i:=l to n do {виведення відсортованого масиву}
write(a[i],' ');
readln; end.
Приклад задачі сортування одновимірного масиву методом вибору
Весь масив вважати невідсортованою частиною. Поки ця частина містить більше одного елемента, виконувати такі дії:
Вибрати перший елемент невідсортованої частини масиву і вважати його мінімальним; запам'ятати індекс цього елемента.
Для елементів від наступного після вибраного і до останнього повторювати такі дії:
Порівняти вибраний елемент і поточний.
Якщо вибраний елемент більший за поточний, запам'ятати поточний елемент як мінімальний, а його індекс – як індекс мінімального елемента.
Поміняти місцями мінімальний і вибраний на кроці 1 елементи.
Пересунути початок невідсортованої частини на одну позицію вправо.