Алгоритмы
1. Рекурсивные алгоритмы, рекурсивные функции.
2. Алгоритм поиска с возвратом
3. Работа с множеством данных, расположенных в одномерном массиве
Задача поиска элемента
Добавление поиска элемента к множеству
Удаление элемента из множества
4. Упорядочение данных в одномерном массиве – Сортировка
5. Хеширование – специальный алгоритм хранения множества элементов.
Рекурсивные объект – объект, при определении которого есть ссылка на самого себя.
- фрактальные множества,
- кривая Пеано,
- ковер Серпинского.
Выводы
- Каждый вызов функции приводит к созданию в оперативной памяти (в стеке
функции) нового экземпляра формальных параметров.
- У рекурсивного алгоритма должна быть нерекурсивная ветвь, иначе он никогда
на закончится
- Завершение работы на каком-то уровне рекурсии приводит к возврату на
предыдущий уровень с освобождением ранее выделенной памяти.
- Выполнение любой рекурсивной функции сводится к некоторому циклу
Глубина рекурсии – это максимальное число рекурсивных вызовов подпрограммы без
возвратов, которое происходит во время выполнения программы.
Правила конструктирования
1. В рекурсивной функций обязательно должна быить нерекурсивная ветвь.(if или
switch)
2. Необходимо доказать, что глубина рекурсии конечна.
3. Формальные параметры и локальные переменные не должны занимать много
места в оперативной памяти.
18.02.2022
Алгоритм поиска с возвратом file:///C:/Users/Daniel/Downloads/Search.pdf
Матрица соединения
25.02.2022 file:///C:/Users/Daniel/Downloads/Lecture_3.pdf
Структурное программирование.
требование хорошего алгоритма:
1. Структурность
2. Легко читается человеком:
3. Легкость доказательство ее правильность
4. Легкая отладка
5. Хорошо документирован
Как сравнивать алгоритм → Ресурсорть соемкость
оперативная памяти~ количество перемен
время работы процессора ~количество операций
Пространственная сложность~ количество байтов
Временная сложность (время работы компьютера до достижения результата) ~
машинное время (секундов)
Определение. Пространственная сложность алгоритма – объём используемой
оперативной памяти. Пропорциональна количество используемых переменных
простого типа. Определение. Временна’я сложность алгоритма (сложность по
времени) – – время работы компьютера до достижения результата. Пропорционально
количеству элементарных операций процессора.
Алгоритмы
Алгоритмы работа с множествами данных
задача:
1. Поиск
2. Добавление
3. Удаление элемента
S(n)~O(M)
V(n)~
теория вероятности чтобы определить лучший и худший случае
2. Задача вставка:
3. Удаление: дано x – типа T, удалить из массив A, а уменьшить n.
Лекция 04.03.2022
Двоичный (бинарный) поиск.
Задача вставки:
Заданное значение x тима Т добавить в множества, Особенность этой – вставить x
нужно так, чтобы массив остался упорядоченным.
внешняя память
локальный память
ключ индекс
Оценка сложности.
В лучшем случае, когда A[k] больше всех предыдущих, цикл сразу завершится и будет
содержать только одну операцию сравнения.
В худшем случае, когда когда меньше всех предыдущих, цикл будет содержать 2k
операций.
Метод Шелла – улучшение метода прямого включения
являющийся усовершенствованным вариантом сортировки вставками.
𝑇(𝑛)~ 𝑛 2 log2 n
Оцениваем сложность;
Шейкер-сортировки.
Кнут Д.
18.03.2022
Алгоритмы сортировки
4. Сортировка с помощью разделения (быстрая сортировка)
Разделения массива на 2 части:
25.03.2022
Хеш-функция представляет собой функцию, которая получает
строку(последовательность байтов) и возвращает число: отображает строки на числа.
Разным последовательностям байтов должны соответствовать разные числа.
Написать такую функцию почты невозможно.
Задачи с хэшированием
1. Задача поиска: для заданного , определить, есть ли в массиве.
Задача решается за 2 шага – время не зависит от количество хранящихся
данных : O(1).
floor – функция окружения внизу.
2. Задача вставки: заданное ч разместить в массиве.
Коллизия – ситуация когда двум ключам назначается один элемент массива.
при хэшировании коллизия нередка ситуация.
Алгоритм решающие коллизи
Решения коллизия (автоматическим способом):
Основные требования:
Главное преимущество хэширование – быстрый поиск. и небольшое число
шагов с константным временем.
Недостатки:
сложно хорошую хэш функции