
- •Питання до екзамену
- •1.Загальні поняття структур даних і алгоритмів
- •2.Інформація та її представлення в пам’яті
- •3.Зберігання інформації
- •5.Системи числення
- •6.Операції над структурами даних
- •7.Концепція типу даних
- •10.Поняття структури даних типу «масив»
- •11. Поняття структури даних типу «запис»
- •16.Алгебраїчний підхід до операції із структурами
- •17.Методи пошуку в масиві
- •30.Сортування за допомогою вибору
- •31.Сортування за допомогою простого обміну (бульбашкового сортування)
- •Сортування методом обміну
- •35.Метод простого злиття
- •60. Зберігання багатовимірних масивів
35.Метод простого злиття
Сортування методом злиття
У запропонованому Дж. фон Нейманом методі сортування злиттям, як і в методі Хоара, реалізовано принцип «розділяй та пануй». Масив ділиться навпіл, до кожної половини застосовується рекурсивно та сама процедура сортування злиттям, а відсортовані частини з'єднуються в один впорядкований масив.
Отже, базовою операцією методу є злиття двох упорядкованих масивів в один. Ефективний спосіб виконання цієї операції полягає в тому, що елементи масивів порівнюються і за результатами порівняння в новий масив записується елемент або з першого, або з другого масиву. Один з масивів під час злиття може закінчитися раніше. В такому випадку елементи іншого масиву, які ще не були опрацьовані, слід додати до нового масиву.
Час злиття упорядкованих масивів лінійно залежить від їх сумарної довжини. Враховуючи цей факт, неважко буде довести, що повне сортування методом злиття, як і сортування методом Хоара, потребує виконання O(n log n) базових операцій над елементами масиву розмірності n.
Програму сортування методом злиття наведемо у прикладі 7.13 з наступного розділу. Задачу злиття двох масивів реалізуємо за допомогою процедури. Оскільки процедура злиття має бути застосована до різних підмасивів, то зручно було б передавати масив до процедури як параметр. Особливостям використання масивів як параметрів підпрограм і присвячено наступний розділ.
36.Рекурсивні функції та алгоритм
37.Алгоритми штучного інтелекту
38.Метод частинних цілей
39.Метод сходження
40.Метод відпрацювання назад
41.Евристичні алгоритми
42.Ймовірнісні алгоритми
43.Метод спроб та помилок
44. Визначення алгоритму, виконавці алгоритмів
45. Визначення алгоритму, способи описання алгоритмів
46. Поняття структури даних
47. Основні види складених типів даних
47. Набір допустимих операцій для структур даних
48. Загальна класифікація алгоритмів пошуку
49. Порівняння методів пошуку
50. Алгоритми сортування
51. Рекурсія та її використання
52. Властивості алгоритмів
Алгоритми мають ряд важливих властивостей:
Скінченність-алгоритм має завжди завершуватись після виконання скінченної кількості кроків. Процедуру, яка має решту характеристик алгоритму, без, можливо, скінченності, називають методом обчислень.
Дискретність-процес, що визначається алгоритмом, можна розчленувати (розділити) на окремі елементарні етапи (кроки), кожен з яких називається кроком алгоритмічного процесу чи алгоритму
Визначеність-кожен крок алгоритму має бути точно визначений. Дії, які необхідно здійснити, повинні бути чітко та недвозначно визначені для кожного можливого випадку.
Вхідні дані алгоритм має деяку кількість (можливо, нульову) вхідних даних, тобто, величин, заданих до початку його роботи або значення яких визначають під час роботи алгоритму.
Вихідні дані алгоритм має одне або декілька вихідних даних, тобто, величин, що мають досить визначений зв'язок із вхідними даними.
Ефективність Алгоритм вважають ефективним, якщо всі його оператори досить прості для того, аби їх можна було точно виконати за скінченний проміжок часу з допомогою олівця та аркушу паперу.
Масовість властивість алгоритму, яка полягає в тому, що алгоритм повинен забезпечувати розв`язання будь-якої задачі з класу однотипних задач за будь-якими вхідними даними, що належать до області застосування алгоритму.
53. Набір допустимих операцій для структури даних «масив»
54. Набір допустимих операцій для структури даних «запис»
55. Набір допустимих операцій для структури даних «множина»
56. Поняття структури даних типу «стек»
СТЕК в інформатиці та програмуванні -- різновид лінійного списку, структура даних, яка працює за принципом (дисципліною) "останнім прийшов -- першим пішов" (LIFO, last in, first out). Всі операції (наприклад, видалення елементу) в стеку можна проводити тільки з одним елементом, який знаходиться на верхівці стеку та був введений в стек останнім.
Стек можна розглядати як певну аналогію до стопки тарілок, з якої можна взяти верхню, і на яку можна покласти верхню тарілку (інша назва стеку -- "магазин", за аналогією з принципом роботи магазину в автоматичній зброї)
57. Поняття структури даних типу «черга»
Черга в програмуванні — динамічна структура даних, що працює за принципом "перший прийшов - перший пішов" (англ. FIFO — first in, first out). У черги є голова (англ. head) та хвіст (англ. tail). Елемент, що додається до черги, опиняється в її хвості. Елемент, що видаляється з черги, знаходиться в її голові.
Така черга повністю аналогічна звичній "базарній" черзі, в якій хто перший встав в неї, той першим буде обслуженим (але, на відміну від реальної черги, імовірність пройти поза чергою виключена)
58. Поняття структури даних типу «дерево»
Дерево - в інформатиці та програмуванні одна з найпоширеніших структур даних. Формально дерево визначається як скінченна множина Т з однієї або більше вершин (вузлів, nodes), яке задовольняє наступним вимогам:
існує один виокремлений вузол - корень (root) дерева
інші вузли (за виключенням кореня) розподілені серед m ≥ 0 непересічних множин T1 .Tm і кожна з цих множин в свою чергу є деревом. Дерева T1 .Tm мають назву піддерев (subtrees) даного кореня.
59. Поняття структури даних типу «граф»
Граф — пара множин V і E, елементи множини V називають вершинами (англ. vertex), множина E містить впорядковані та невпорядковані пари вершин. Невпорядкована пара вершин називається ребром, впорядкована — дугою.
Граф, який містить тільки ребра називається неорієнтованим, який містить тільки дуги — орієнтованим. Якщо пара вершин сполучається кількома ребрами чи дугами одного напрямку, то ребра (дуги) називають кратними. Дуга чи ребро що сполучає вершину саму із собою називається петлею. Вершини сполучені ребром чи дугою називають суміжними, також називають суміжними ребра, що мають спільну вершину.
Кожен граф можна відобразити в евклідовому просторі множиною точок, які відповідають вершинам, сполучених лініями, що відповідають ребрам (дугам).