
- •Затверджено на засіданні
- •Редактор л.М. Тонкошкур
- •1. Предмет та зміст дисципліни
- •2. Структури даних.
- •2.1 Динамічні структури даних.
- •2.2. Стеки
- •Блок-схема функції push додавання до стеку нового елемента
- •Блок-схема функції pop видалення останнього елемента стеку
- •Варіанти індивідуальних завдань
- •2.3. Списки.
- •Блок-схема програми
- •Варіанти індивідуальних завдань
- •2.4. Черги.
- •Блок-схема програми
- •Варіанти індивідуальних завдань
- •2.5. Дерева.
- •Варіанти індивідуальних завдань
- •4.Алгоритми сортування
- •Варіанти індивідуальних завдань
- •5.Алгоритми пошуку.
- •Лінійний пошук - це пошук підряд в неупорядкованій послідовності.
- •Варіанти індивідуальних завдань
- •6.Алгоритми на графах.
- •Варіанти індивідуальних завдань
- •Список літератури
4.Алгоритми сортування
Сортування – це процес перегрупування заданої множини об’єктів у визначеній черзі (зростання або убування). Множиною для сортування мають бути елементи масивів або записи файлів. Кожен запис має поле ключа та поле інформації:
struct node
{ float num //ключове поле
//інформаційні поля
}
Записи впорядковуються за значенням ключа.
Розглянемо деякі методи сортування
Швидке сортування (OuickSort)
Алгоритм
Вхід: масив сортованих елементів А.
Вихід: відсортований масив А.
Крок 1.1) Вибрати навмання елемент х одним з способів:
за допомогою генератора випадкових чисел;
2) х = А[i] = А[ (1+n)/2 ] (медіана).
Крок 2. Переглядати масив ліворуч, доки не знайдеться елемент А[і] > х.
Крок 3. Переглядати масив праворуч, доки не знайдеться елемент А[і] < х.
Крок 4. Поміняти місцями А[i] та А[j].
Крок 5. Продовжити процес перегляду та обміну (кроки 1-4), доки вони не зустрінуться (i = j). Результат: масив поділено на ліву частину, де всі елементи менші за х та праву, де всі елементи не менші за х.
Крок 6. Застосувати кроки 1-5 до кожної з одержаних частин, доки в кожній з частин не залишиться по одному елементу.
Сортування деревом (HeapSort)
Алгоритм
Вхід: масив елементів (вузлів) сортування А, де А [1] – елемент у корені.
Вихід: елементи масиву А, організовані у вигляді сортуючого дерева, тобто:
A[i]<=A[n/2] , 1< i <n.
Крок 1. Вузли дерева помітити елементами масиву, який треба відсортувати.
Крок 2. Міняти розміщення елементів (вузлів), доки кожен вузол стане не меншим за його нащадків. Таке дерево називають сортуючим.
Крок 3.Найбільший елемент, який відповідає кореню дерева, видаляється, а в корінь переноситься елемент самого останнього листа. Перехід до кроку 2. Якщо на дереві залишився тільки один елемент, то перехід до кроку 4.
Крок 4. Результатом є послідовність елементів, видалених з сортуючого дерева, впорядкована по убуванню.
Cортування Шелла (ShellSort)
Алгоритм
Крок
1. Масив з n елементів А розбити на k груп
по 2 елементи в кожній таким чином, щоб
елементи кожної групи розташувались
на відстані d один від одного. d-крок
групи, повинен бути ступенем двох (або
d
n/2).
Крок 2. Відсортувати елементи в кожній з груп, наприклад методом пузиркового включення.
Крок 3. k і d зменшують удвічі. Перейти до кроку 2. Якщо d дорівнює 1, перейти до кроку 2 і потім завершити сортування.
Сортування злиттям (MergeSort)
Алгоритм. (Сортування методом «розподіляй і володій»).
Крок 1. Масив елементів А розбити на 2 частини В і С.
Крок 2. Частини В і С зливаються, при цьому одиночні елементи утворюють упорядковані пари.
Крок 3. Перейти до кроку 1, при цьому упорядковані пари переходять у такі ж четвірки.
Крок 4. Повторюючи кроки 1-2, зливаємо четвірки в вісімки і так далі, доки не буде упорядкований весь масив А.
Пухирцеве включення (BubbleInsertion)
В сортуванні включенням кожен елемент почергово порівнюється з попередніми і шукається місце включення цього елемента.
Алгоритм
Пухирцеве спливання (BubbleSort)
В сортуванні «пухирцем» послідовно порівнюються елементи, що стоять поруч, і в разі необхідності обмінюються місцями. Таким чином, поступово найбільші за значенням елементи «спливають» у кінці масиву.
Алгоритм