
- •Лекція 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 кортежі. Зберігання множин і масивів. Зберігання розріджених матриць. Операції з масивами, множинами та кортежами
9.4. Зберігання розріджених матриць
Розрідженими називають такі матриці, більшість елементів яких дорівнює нулю. Такі матриці зберігаються у вигляді зв‘язаних структур. Існують спеціальніалгоритми введення і множення розріджених матриць, зображених у такій формі. Одним з основних способів їх зберігання є табличний. Він полягає у запам'ятовуванні ненульових елементів матриці в одномірному масиві та ідентифікації кожного елемента масиву індексами рядка і стовпця.
Наприклад, нехай задана матриця:
Її можна зберігати у вигляді трьох векторів, які містять відповідно ненульові елементи матриці, а також індекси їх рядків та індекси стовпців: Z={6,9,2,7,8,12,3} - значення ненульових елементів; R ={1,1,2,2,2,4,5} - індекси рядків; S={3,5,1,4,5,3,4} - індекси стовпців. Щоб не було повторень у векторі індексів рядків R , у ньому можна зберігати тільки індекс першого елемента у послідовності S :
Лекція 10. Нелінійні структури даних
У попередніх структурах даних були реалізовані в основному одномірні відношення. Але існують структури даних, в яких виражено не тільки лінійне відношення фізичного сусідства, а значно складніші відношення між їх компонентами. Всі такі структури утворюють важливий і складний клас нелінійних структур даних, основні з яких - таблиці, дерева, спискові структури та сітки.
10.1. Таблиці
Широко розповсюдженим видом діяльності є довідково-інформаційне обслуговування, яке включає в себе накопичення даних, прийом і видачу даних на вимогу. Типовою задачею довідково-інформаційного обслуговування є задача організації і сумісного зберігання рівних записів і видачі на вимогу довільного запису незалежно від того, які записи і в якому порядку видавались раніше. В таких задачах використовують структуру даних, яку називають таблицею. Таблиця це набір поіменованих об’єктів (або записів) довільної природи, з кожним з яких однозначно пов‘язане його ім‘я. Ім‘я запису називають його ключем. Таблиці є основною структурою запам‘ятовування у файлових структурах, організованих на зовнішній пам'яті комп‘ютера.
Ключ однозначно визначає місце кожного елемента в таблиці і забезпечує прямий доступ до нього. Наприклад, таблиця може мати такий вигляд:
Кожний запис у таблиці містить один або більше ключів. З цими ключами пов‘язується тип виконуваних дій. Наприклад, ключем може бути номер службовця або його прізвище. Ключ може складатися з кількох атрибутів. Основні властивості ключа:
1) однозначна ідентифікація елемента;
2) відсутність надмірності.
Для одного елемента може існувати декілька наборів атрибутів, які задовольняють цим двом властивостям. Ключ, який буде використовуватися для ідентифікації записів, називають первинним. Для нього атрибути слід вибирати так, щоб для них був заздалегідь відомий діапазон значень, а їх кількість була б якнайменшою.
Таблиці поділяються на впорядковані і невпорядковані.
У найпростіших невпорядкованих таблицях записи розміщуються один за одним без пропусків. Але невпорядковані таблиці неефективні при пошуку елементів, тому такі таблиці застосовують в тих випадках, коли частота доступу до їх елементів невелика.
Частіше використовуються впорядковані таблиці. Вони можуть бути впорядковані за різними атрибутами, наприклад за зростанням цифрового коду ключа або частотою звертання до записів. У першому випадку для пошуку записів застосовують алгоритм двійкового пошуку, у другому - алгоритм послідовного пошуку (див.лек.9). Організація впорядкованих таблиць вимагає додаткових витрат машинного часу.
Таблиці можуть мати ієрархічну структуру, наприклад, організовані у вигляді дерева. Структура таблиці відображає перш за все шляхи доступу при обробці індивідуальних елементів таблиці. Для всякої табличної структури характерним є те, що операції включення і виключення елементів можуть виконуватись в будь-якому місці. Операції з таблицями задаються по відношенню до ключа, а виконуються також і над записом.
Основні операції з таблицями:
1) включення : дана пара (ключ і запис); включити запис в таблицю так, щоб його потім можна було знайти за ключем;
2) заміна: дана пара (ключ і запис); знайти запис із заданим ключем і замінити його на задане значення;
3) виключення елемента за заданим ключем;
4) пошук : за заданим ключем знайти відповідний запис;
5) друк елементів таблиці.
У загальному випадку названі операції можна звести до двох основних: сортування і пошук. Ці операції залежать від методу доступу до елементів таблиці, а методи доступу, в свою чергу, - від структури таблиці
Існує три основних класи методів обробки таблиць в залежності від характеристики їх структур:
1) використовує стратегію послідовного доступу;
2) організовує доступ по дереву;
3) робить шляхи доступу до елементів таблиці безпосередніми.