
- •Вимоги до виконання лабораторної роботи та оформлення звіту
- •Лабораторна робота № 1
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 2
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 3
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 4
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 5
- •Методичні вказівки до роботи:
- •Теоретичні відомості
- •Контрольні запитання
- •Лабораторна робота № 6
- •Методичні вказівки до роботи:
- •Задача для конкретного варіанту.
- •Лістинг програми.
- •Висновок до роботи. Теоретичні відомості
- •Контрольні запитання
- •Додаток а
- •Додаток б
- •Література
Контрольні запитання
Чим відрізняються списки від масивів?
Чим відрізняються списки від файлів?
Як створити найпростіше меню в Паскалі?
Що таке процедура?
Що таке функція?
Які типи списків існують?
Лабораторна робота № 6
(4 год).
Тема роботи: Методи сортування в масивах.
Мета роботи: Опанування навичками виконання сортування в масивах за заданими алгоритмами.
Постановка задачі: Створити і вивести одновимірний масив. Виконати обробку масиву згідно з завданням. Вивести результати обробки.
Методичні вказівки до роботи:
В програмі передбачити заповнення масиву двома способами:
задати масив як константу,
заповнити масив випадковими числами.
Вивести масив перед сортуванням.
Виконати сортування масиву заданими способами.
Виводити масив після кожного сортування.
Завдання відповідно до варіанту вибрати з Таблиці 6.
Зміст звіту:
Задача для конкретного варіанту.
Лістинг програми.
Результати виконання програми.
Висновок до роботи. Теоретичні відомості
Сортуванням, або впорядкуванням списку об’єктів зветься розташування цих об’єктів по збільшенню або зменшенню відповідно до певного лінійного співвідношення порядку, такому як відношення для чисел. Тема сортування поділена на дві великі частини – внутрішнє і зовнішнє сортування. При внутрішньому сортуванні всі дані вміщуються в оперативну пам’ять комп’ютера, де можна отримати доступ до даних у будь-якому порядку. Зовнішнє сортування застосовується тоді, коли об’єм даних надто великий, щоб усі дані можна було вмістити в оперативну пам’ять.
Сортування обміном (інша назв метод бульбашок) – послідовно порівнюються пари сусідніх елементів xk і xk+1 (k=1,2,3,..,n-1) і, якщо xk>xk+1 вони міняються місцями. Таким чином найбільший елемент вже за перше проходження порівнянь опиниться на своєму місці в кінці масиву. Потім цей метод застосовується до решти масиву і т.д. Сортування вважається завершеним, якщо за повний перегляд списку не було виконано жодної перестановки.
Сортування вибором полягає в тому, що відшукується максимальний елемент і переноситься в кінець масиву або міняється місцями з останнім елементом масиву. Потім відшукується максимальний елемент в решті масиву і переноситься в кінець зменшеного масиву або міняється місцями з передостаннім елементом масиву і т.д.
Сортування вставкою полягає в тому, що впорядкований масив B1 будується з початкового B таким чином: спочатку першим його елементом вибирається k1. Потім виконується вставка вузла ki, i=2,3,…,n так, щоб B1 залишався упорядкованим списком довжиною i.
Сортування
квадратичним
вибором
полягає в тому, що початковий список B
з n
елементів ділиться на m
підсписків B1,
B2,
…,Bm,
де
,
приблизно рівної довжини, і в кожному
Bi
відшукується мінімальний елемент gi.
Найменший елемент списку B
визначається, як мінімальний елемент
gj
зі списку G=<g1,g2,…,gm>.
Вибраний елемент gj
зі списку
G
замінюється новим найменшим елементом
зі списку Bj
і т.д.
Процес продовжується до упорядкування
всього списку. Кількість потрібних
порівнянь для сортування квадратичним
вибором має порядок
,
але використовується додаткова пам’ять
для зберігання списку
G.
Швидке сортування полягає в тому, що з елементів початкового масиву B[1],…, B[n] з цих елементів вибирається певне значення ключа v в якості опорного елементу, відносно якого впорядковуються елементи масиву. Далі елементи масиву переставляються так, щоб для певного індексу j усі переставлені елементи B[1],…, B[j] мали значення ключів менші за v, а усі елементи B[j+1],…, B[n] – значення ключів були більші або дорівнювали. Потім процедура швидкого сортування рекурсивно застосовується до множин елементів B[1],…, B[j] і B[j+1],…, B[n] для їх впорядкування окремо. Через те, що всі значення ключів першої множини менші за значення ключів другої множини, масив буде відсортований правильно.
Бінарне сортування є різновидом швидкого сортування. Тут з усіх елементів списку B=<k1,k2,…,kn> виділяються його мінімальний і максимальний елементи і обчислюється їх середнє арифметичне μ=(min+max)/2. Список B ділиться на підсписки B1 та B2, причому, в B1 потрапляють елементи, не більші μ, а в B2– більші μ. Потім сортування непорожніх списків B1 та B2 виконується рекурсивно.
Розподільне (інша назва кишенькове) сортування Припустимо, що елементи лінійного списку B є t–цифрові додатні десяткові числа, а d(j,n) – j-та праворуч цифра в десятковому числі n≥0,
d(j,n)=(n/m)%10,
де m=10j-l. Нехай B0,B1,…,B9 - допоміжні списки (“кишені”), спочатку порожні. Для реалізації розподільного сортування виконується процес з двох дій, названих розподілом та складанням при j=1,2,…,t. Розподіл полягає в тому, що елемент ki, 1≤i≤n, зі списку B=<k1,k2,…,kn> додається, як останній, у список Bu, де u=d(j,kj). Для зберігання елементів списку з певним значенням ключа створюються кишені. Перевіряємо, чи даний елемент має ключ з значенням і якщо це так, вміщуємо цей елемент в кишеню. Може статися, що в одній кишені зберігається декілька елементів, а інша – порожня. Складання об’єднує створені списки B0,B1,…,B9 в цьому ж порядку, утворюючи один список B. Далі знову виконується розподіл і складання.
Бітове сортування є різновидом розподільного сортування, де елементи списку тлумачаться, як двійкові числа, а d(j,n) означає j-ту праворуч двійкову цифру числа n. Для цього сортування в процесі розподілу потрібні лише дві кишені B0 і B1, які можна розмістити в одному масиві. Виділення j–го біта d(j,n) здійснюється операціями зсуву, що виконується значно швидше операцій ділення.
Сортування злиттям Для побудови упорядкованого списку B1 із списку B=<k1,k2,…,kn> за сортуванням злиттям список B ділиться на n підсписків B1=<k1>, B2=<k2>,…,Bn=<kn> довжини 1. Потім здійснюється процедура проходження, в якій m≥2 упорядкованих списків B1, B2,…,Bm змінюються на m/2 упорядкованих списків, що утворюються злиттям B2i-1 та B2i (2i≤m) і додаванням Bm з непарним m. Процес повторюється до появи однієї послідовності довжиною m.