
- •Лекція 1. Структури даних. Основні визначення та поняття
- •1.1. Термінологія
- •1.2. Типи даних
- •1.3. Рівні організації даних
- •1.4. Представлення даних
- •1.5. Класифікація структур даних
- •1.6. Основні операції над структурами даних
- •1.7. Документування даних
- •Лекція 2. Алгоритми. Складність алгоритмів.
- •2.1. Зображення алгоритмів
- •2.2. Складність алгоритмів
- •2.3. Класи алгоритмів
- •2.4. Документація алгоритмів
- •Лекція 3. Методи сортування .
- •3.1. Задача сортування
- •3.2.Метод простої вибірки.
- •3.3. Метод бульбашки.
- •3.4.Швидкий метод сортування
- •Лекція 4 методи сортування (продовження)
- •4.5. Сортування включенням
- •4.6. Сортування розподілом
- •4.7. Сортування злиттям або об’єднанням
- •4.8. Сортування підрахунком
- •Лекція 5 нелінійні структури даних
- •5.1. Дерева
- •5.1.1. Бінарні дерева
- •5.1.2. Алгоритм обходу дерева
- •5.1.3. Зображення в пам‘яті комп‘ютера графоподібних структур
- •Лекція 6 методи сортування на деревах
- •6.1. Сортування на деревах
- •6.1.2. Пірамідальне сортування.
- •Питання до першого модуля
- •Тема 1. Основні визначення та поняття. Термінологія. Класифікація структур даних. Основні операції над структурами даних.
- •Тема 2. Поняття алоритму. Зображення алгоритмів. Алгоритмічна складність. Поліноміальна та неполіноміальна складність алгоритмів..
- •Тема 3-4. Алгоритми сортування
- •Тема 5-6. Дерева. Основні визначення та поняття. Бінарні дерева. Зображення в пам‘яті еом графоподібних структур. Алгоритми обходу дерев.Висхідні, нисхідні, змішані алгоритми обходу дерев.
- •Лекція 7. Лінійні структури даних. Стеки, черги і деки.
- •7.1. Стеки
- •7.1.1. Реалізація стеку на базі масиву
- •7.2. Черги
- •7.2.1. Використання черги в програмуванні
- •7.2.2. Реалізація черги на базі масиву
- •7.3. Деки
- •Лекція 8. Лінійні структури даних.
- •8.1. Лінійні списки . Основні визначення та поняття
- •8.2. Однонаправлені списки
- •8.3. Двонаправлені списки
- •8.4. Циклічні списки
- •Лекція 9. Масиви, множини, кортежі
- •9.1. Масиви
- •9.2. Множини I кортежі
- •9.2.1. Реалізація множини
- •9.3. Зберігання множин і масивів
- •9.4. Зберігання розріджених матриць
- •Лекція 10. Нелінійні структури даних
- •10.1. Таблиці
- •10.1.1. Зображення таблиць
- •Лекція 11. Нелінійні структури даних
- •11.1. Спискові структури
- •11.1.1. Ієрархічні списки
- •11.1.2. Організація спискових структур
- •11.2. Сіткові структури
- •Лекція 12 пошук даних.
- •12.1. Послідовний пошук
- •12.2. Двійковий пошук
- •12.2.1. Дерева порівнянь на векторній пам‘яті.
- •12.3. Прямий пошук стрічки
- •12.4. Алгоритм Кнута, Моріса і Прата пошуку в стрічці.
- •12.5. Алгоритм Бойера - Мура пошуку в стрічці
- •12.6. Алгоритми з поверненням
- •Лекція 13 пошук у таблицях
- •13.1. Пошук у таблицях з обчислюваними адресами
- •13.2. Пошук у таблицях з прямим доступом
- •13.3. Пошук у Хеш-таблицях
- •Питання до другого модуля
- •Тема 9 Лінійні списки. Основні визначення та поняття. Однонаправлені списки. Двонаправлені списки. Циклічні списки. Організація списків.
- •Тема 10 Масиви. Множини I кортежі. Зберігання множин і масивів. Зберігання розріджених матриць. Операції з масивами, множинами та кортежами
1.4. Представлення даних
Розглянемо представлення даних, що відносяться до прикладної області на системному рівні. Воно визначається поглядом на дані із точки, що перебуває поза програмним середовищем, тобто або з боку користувача, або з боку системи. Зовнішнє представлення даних - це спосіб організації вхідних і вихідних даних. Одні дані утримуються в системі, інші - надходять на її вхід, треті - призначені для виводу й передачі користувачам. Внутрішнє представлення даних - це представлення даних усередині програм, доступне тільки програмісту.
1.5. Класифікація структур даних
Структури даних - це сукупності різних структурованих типів даних. Останні, в свою чергу, мають власну структуру, яка відображає різноманітні відношення між їх складовими компонентами. Основними структурованими типами даних є :
1) масив;
2) декартовий добуток;
З) об’єднання;
4) множина;
5) послідовність;
6) рекурсивний тип.
Особливе місце серед структурованих даних займає тип вказівника або посилання, призначений для забезпечення можливості посилання на інші дані. Компонент такого типу уже має свою структуру.
Відношення, які мають місце в наведених структурованих типах даних, можуть існувати як серед елементів даних, так і серед їх сукупностей.
За аналогією з типами даних сукупність, що складається тільки з елементів даних, називається простою, а сукупність, що містить інші сукупності, - складовою. Сукупність даних може відповідати об'єкту в конкретних застосуваннях, а її елементи - властивостям цього об’єкту. Глибина вкладень сукупностей у складові може бути як завгодно великою.
Складові сукупності дозволяють будувати ієрархічні відношення між її членами, при цьому виділяються батьківська і залежна сукупності. Якщо відношення між сукупностями не ієрархічне, кожна залежна сукупність може бути зв’язаною з однією або декількома батьківськими сукупностями. Якщо ж відношення ієрархічне, кожна залежна сукупність може бути зв’язана тільки з однією батьківською сукупністю.
Зв’язки між компонентами структур можуть бути задані явно і неявно. Зокрема, структуровані дані типу посилання дозволяють будувати зв'язки між компонентами структур у явному вигляді. Якщо ж структура побудована на основі відношень між іншими структурованими типами даних, такі зв’язки між її компонентами задані неявно.
Система обробки даних може передбачати більше як один тип відношення між сукупностями, тобто допускаються відношення, що мають різні правила композиції, або по-різному застосовуються для складання інших структур.
У загальному випадку всі типи зв’язків між компонентами структур можна розділити на три: 1) зв’язок типу 1:1; 2) зв’язок типу 1: N ; 3) зв’язок типу М:N (рис. 1.1).
Рис. 1.1. Типи зв‘язків у структурах даних
Виходячи з типів даних і зв’язків між ними, розділимо всі структури даних на три класи: найпростіші, лінійні і нелінійні. При цьому розглянемо всі можливі структури, які бувають на абстрактному та конкретному рівнях.
До найпростіших або примітивних структур відносять усі типи даних, над якими безпосередньо виконуються машинні операції, тобто арифметичні і рядкові елементи даних. Із рядкових елементів найпростішими є символьні і бітові. Останні є не в усіх системах обробки даних. Наприклад, у мові Фортран бітового рядка немає, а є тільки символьний, а в мові Сі - є і бітовий, і символьний.
Лінійні і нелінійні структури - це сукупності структурованих типів даних. Лінійною структурою даних назвемо таку сукупність структурованих типів даних, яка відображає відношення сусідства між компонентами. Інші структури назвемо нелінійними структурами даних.
Прості сукупності даних, а також ті прості структури, в яких реалізовано зв’язок 1:1, віднесемо до лінійних структур даних. Двозв’язані лінійні списки, в яких реалізовано зв’язок 1:2, як частковий випадок структур із зв’язком і: N , також віднесемо до лінійних структур даних. Інші складні структури, в яких реалізовано зв’язок 1:N та M:N між складовими сукупностями, віднесемо до нелінійних структур даних.
Таким чином, класифікацію структур даних можна зобразити наступною діаграмою, де S означає структури даних (рис.1.2).
Рис.1.2. Класифікація структур даних