- •Лабораторная работа 1 (Вариант 15) Методы сортировки, Методы поиска
- •Шейкерная сортировка
- •Быстрая сортировка (сортировка Хоара)
- •Сортировка в нелинейных структурах Турнирная сортировка
- •Пирамидальная сортировка
- •Алгоритмы поиска словесной информации
- •Алгоритм Кнута - Морриса - Пратта (кмп)
- •Фибоначчиев поиск
- •Поиск по бинарному дереву
- •Методы поиска, основанные на числовых свойствах ключей Поиск по бору
- •Поиск хешированием
- •Алгоритм Рабина
- •Ответы на вопросы:
- •Что понимается под сортировкой?
- •Каковы особенности сортировки: вставкой, выбором, обменом, Шелла, Хоара, турнирной, пирамидой?
- •Что включает в себя понятие сложности алгоритма?
- •В чем состоит методика анализа сложности алгоритмов сортировки?
- •Дайте определение понятия «линейная динамическая структура данных». Приведите примеры таких структур. Назовите их характерные особенности.
- •Сформулируйте принцип топологической сортировки, приведите примеры. Поясните необходимость использования тех или иных структур данных и выбранный метод реализации.
- •Что понимается под поиском?
- •В чем состоит методика анализа сложности алгоритмов поиска?
- •Каковы особенности поиска последовательного и бинарного?
- •Каковы особенности поиска интерполяционного и Фибоначчиевого?
- •Каковы особенности поиска по бинарному дереву?
- •Каковы особенности поиска по бору и хешированием?
- •В чем состоит методика анализа сложности алгоритмов поиска?
- •В чем особенность алгоритмов поиска словесной информации?
- •Что такое коллизия?
- •Какой метод используется для разрешения коллизий?
- •Что определяет показатель сбалансированности узла дерева?
- •Перечислите понятие дерева, двоичного дерева, упорядоченного дерева, дерева поиска.
- •Укажите способы задания дерева.
Шейкерная сортировка
Очевидный прием улучшения алгоритма стандартного обмена -
запоминать, были или не были перестановки в процессе некоторого
прохода. Если в последнем проходе перестановок не было, то алгоритм
можно заканчивать. Это улучшение, однако, можно опять же улучшить,
если запоминать не только сам факт, что обмен имел место, но и положение (индекс) последнего обмена. Ясно, что все пары соседних элементов выше этого индекса k уже упорядочены. Поэтому просмотры
можно заканчивать на этом индексе, а не идти до заранее определенного
нижнего предела для i.
Быстрая сортировка (сортировка Хоара)
В методе быстрой сортировки фиксируется базовый ключ, относительно которого все элементы с большим весом перемещаются вправо,
а с меньшим - влево. В качестве базового элемента обычно выбирается
любой крайний элемент исходного множества, который постоянно
сравнивается с противоположно стоящими элементами. При этом весь
список элементов делится относительно базового ключа на две части.
Для каждой части процесс повторяется.
Сортировка в нелинейных структурах Турнирная сортировка
Метод турнирной сортировки основан на повторяющихся поисках
наименьшего ключа среди n элементов, среди оставшихся (n – 1)
элементов и т.д. Например, сделав n/2 сравнений, можно определить в
каждой паре ключей меньший. С помощью n/4 сравнений – меньший
из пары уже выбранных меньших и т.д. Проделав (n – 1) сравнений,
можно построить дерево выбора и идентифицировать его корень как
наименьший ключ.
Затем осуществляется спуск вдоль пути, отмеченного наименьшим
элементом, и исключение его из дерева путем замены либо на пустой
элемент (дырку) в самом низу, либо на элемент из соседней ветви в
промежуточных вершинах. Элемент, передвинувшийся в корень дерева,
вновь будет наименьшим (теперь уже вторым) ключом, и его можно исключить. После n таких шагов дерево станет пустым (т.е. в нем останутся одни дырки) и процесс сортировки заканчивается.
Пирамидальная сортировка
Данный тип сортировки заключается в построении пирамидального дерева. Пирамидальное дерево — это бинарное дерево, обладающее
тремя свойствами:
1. В вершине каждой триады располагается элемент с бо́льшим
весом.
2. Листья бинарного дерева находятся либо в одном уровне, либо
в двух соседних.
3. Листья нижнего уровня располагаются левее листьев более высокого уровня, т.е. заполнение каждого уровня осуществляется слева
направо.
В ходе преобразования элементы триад сравниваются дважды, при этом элемент с большим весом перемещается вверх, а с меньшим – вниз.
Топологическая сортировка
Топологическая сортировка — это одна из известных задач в программировании, в которой широко применяются списки. Под топологической сортировкой понимается сортировка элементов, для которых
определен частичный порядок, т.е. упорядочение задано не на всех, а
только на некоторых парах элементов.
Лабораторная работа № 2
Методы поиска
Методы поиска, основанные на сравнении ключей
Последовательный поиск
В последовательном поиске исходное множество не упорядоченное, т.е. имеется произвольный набор ключей {k1, k2, k3,..., kn}. Метод
заключается в том, что отыскиваемый ключ K последовательно сравнивается со всеми элементами множества. При этом поиск заканчивается
досрочно, если ключ найден.
Бинарный поиск
В бинарном поиске исходное множество должно быть упорядоченным по возрастанию. Иными словами, каждый последующий ключ
больше предыдущего:
{k1 ≤ k2 ≤ k3 ≤ k4 ,..., kn–1 ≤ kn}.
Отыскиваемый ключ сравнивается с центральным элементом множества.
Если он меньше центрального, то поиск продолжается в левом подмножестве, в противном случае - в правом.
Центральный элемент находится по формуле:
Nэл = [n/2] + 1,
где квадратные скобки обозначают, что от деления берется только целая
часть (дробная часть не учитывается). В методе бинарного поиска анализируются только центральные элементы.
