
- •Лекція 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 кортежі. Зберігання множин і масивів. Зберігання розріджених матриць. Операції з масивами, множинами та кортежами
Лекція 2. Алгоритми. Складність алгоритмів.
2.1. Зображення алгоритмів
Алгоритм – це формально описана обчислювальна процедура, яка отримує вихідні дані та видає результат обчислень на виході [3]. Вихідні дані також називаються входом алгоритму або його аргументом. Алгоритми будуються для розв‘язку тих або інших обчислювальних задач. Формулювання задачі описує, яким вимогам повинен задовольняти розв‘язок задачі. Алгоритм, що розв‘язує цю задачу, знаходить об‘єкт, який задовольняє даним вимогам.
Алгоритм вважається правильним, коректним, якщо для будь-якого входу він закінчує роботу та видає результат, що задовольняє вимогам задачі.. Неправильний алгоритм може зовсім не закінчити роботи або дати невірний результат.
Алгоритм відрізняється від системи та програми тим, що в ньому міститься тільки опис дій, що виконуються над даними, але повністю відсутні будь-які описи даних. Алгоритми можуть бути представлені за допомогою таблиць розв'язків, вербально з покроковим описом дій та псевдокодів. Алгоритми містять визначення покрокового процесу обробки даних з описом перетворень даних і функцій керування. Вони можуть бути записані природною мовою, на мові програмування, а також за допомогою математичної або іншої символічної нотації. Назва алгоритму може вказувати на його призначення (наприклад, алгоритмсортування, обертання матриць, гри в "хрестики й нулики" і т.п. ) або визначати використовуваний у ньому метод розв'язку.
Зображення алгоритмів найкраще пояснити на прикладі. Розглянемо алгоритм знаходження елемента вектора з найбільшим алгебраїчним значенням.
АЛГОРИТМ GТ визначає найбільший за значенням елемент вектора А , що містить n елементів, і присвоює його значення величині МАХ . Символ івикористовується у ролі індексу елемента вектора А .
GТ1. Перевірка умови - чи вектор не порожній?
Якщо n <1 , то - друк повідомлення; à GТ6.
GТ2. Початок: МАХ = А[1], i=2.
GТЗ. Повторення кроків GТ4 , GТ5 доти, доки i<=n.
GТ4. Заміна значення MAХ , якщо воно менше від значення наступного елемента: якщо МАX <A[i] , то MAX =А[i]
GТ5. i= i + 1.
GТ6. Кінець, вихід.
Алгоритму присвоєно ім'я GТ. За ним іде короткий опис задачі, яку розв'язує алгоритм, і водночас описуються всі змінні, які тут використовуються. Післяцього наводиться сам алгоритм у вигляді послідовності кроків. Кожний крок описується фразою, яка коротко пояснює дію, що виконується. Символ " à " замінює оператор переходу go to в мовах програмування . Крок GT3 є аналогом заголовку циклу в мовах програмування. Коли значення індексу і перевершить величинуn, відбудеться перехід на крок GT6 (наступний після кінця циклу).
Виконання будь-якого алгоритму починається з кроку і та продовжується послідовно доти, доки цю послідовність не порушить оператор умовного або безумовного переходу.
В алгоритмах часто зустрічається слово "ініціалізація", що означає призначення деяких початкових значень змінним алгоритму. Слово "трасування" слід розуміти як запис послідовності виконуваних дій алгоритму і їх результатів для конкретних даних задачі.