
- •1. Алгоритмы: терминология, свойства, виды, запись.
- •1.4. Операции над числовыми типами
- •2. Битовые типы
- •3. Логический тип
- •4. Символьный тип
- •5. Перечислимый тип
- •6. Интервальный тип
- •6. Статические и динамические структуры данных. Линейные и нелинейные динамические структуры.
- •7. Основные структуры данных. Множества. Массивы. Записи.
- •8. Понятия и цели сортировки. Сортировки массивов и сортировки файлов. Терминология.
- •9. Внутренняя сортировка и ее виды. Требования к методам сортировки массивов. Меры эффективности.
- •10. Простая сортировка обменом. Сравнение методов сортировки.
- •11. Сортировка простым выбором. Сравнение методов сортировки.
- •12. Сортировка простыми вставками. Сравнение методов сортировки.
- •13. Шейкер-сортировка. Сравнение методов сортировки.
- •14. Сортировка включениями с убывающим приращением (сортировка Шелла).
- •15. Сортировка с разделением (быстрая сортировка).
- •16. Сортировка подсчетом. Сравнение методов сортировки.
- •17. Сортировка слиянием. Сравнение методов сортировки.
- •18. Внешняя сортировка. Алгоритмы внешней сортировки.
- •19. Понятие кучи. Основные процедуры и функции для работы с динамической памятью.
- •20. Динамические структуры данных. Указатели.
- •21. Динамические структуры данных. Классификация.
- •22. Связные списки. Виды связных списков. Способы представления.
- •23. Односвязные линейные списки. Последовательное распределение.
- •Интерполяционный поиск
- •47. Внешний поиск в б-деревьях.
- •48. Цифровой поиск.
Интерполяционный поиск
Алгоритм интерполяционного поиска предполагает, что исходный файл упорядочен по величинам ключей поиска. Идея алгоритма состоит в том, что делается предположение о равномерном распределении величин в некотором их диапазоне от u до l. Поэтому, зная величину Х ключа поиска, можно предсказать более точное положение искомой записи, чем просто в середине некоторого отрезка файла. Формула нахождения положения следующего элемента для сравнения следует из деления длины отрезка u-l пропорционально величинам разностей ключей K[u]- [l] и X-K[l]. Интерполяционный поиск асимптотически предпочтительнее бинарного, если только соблюдается гипотеза о равномерном распределении величин ключей.
Алгоритм имеет вид:
Время работы алгоритма t примерно оценивается формулой:
t=a*logN, где a - неизвестная константа, зависящая от программной реализации алгоритма, а также от результата поиска: удачен-неудачен.
40. Поиск в древовидных таблицах. Деревья бинарного поиска.
41. Поиск в таблицах с вычисляемыми входами. Постановка задачи. Общие понятия.
42. Поиск в таблицах с вычисляемыми входами. Хеш-функции.
43. Методы разрешения коллизий. Хеширование с цепочками.
44. Методы разрешения коллизий. Хеширование открытой адресацией.
45. Скорость роста функций. Асимптотики Ο,Θ, Ω. Полиномиальные и неполиномиальные алгоритмы. Примеры.
46. Сбалансированные (АВЛ) деревья.
Бинарные деревья поиска предназначены для быстрого доступа к данным. В идеале разумно сбалансированное дерево имеет высоту порядка O(log2n). Однако при некотором стечении обстоятельств дерево может оказаться вырожденным. Тогда высота его будет O(n), и доступ к данным существенно замедлится. В этом разделе мы рассмотрим модифицированный класс деревьев, обладающих всеми преимуществами бинарных деревьев поиска и никогда не вырождающихся. Они называются сбалансированными или AVL-деревьями. Под сбалансированностью будем понимать то, что для каждого узла дерева высоты обоих его поддеревьев различаются не более чем на 1. Строго говоря, этот критерий нужно называть AVL-сбалансированностью в отличие от идеальной сбалансированности, когда для каждого узла дерева количества узлов в левом и правом поддеревьях различаются не более чем на 1. Здесь мы всегда будем иметь в виду AVL-сбалансированность.
Новые методы вставки и удаления в классе AVL-деревьев гарантируют, что все узлы останутся сбалансированными по высоте. На рисунках 1 и 2 показаны эквивалентные представления массива AVL-деревом и бинарным деревом поиска. Рисунок 1 представляет простой пятиэлементный массив А (A[5] = {1,2,3,4,5}), отсортированный по возрастанию. Рисунок 2 представляет массив B (B[8] = {20, 30, 80, 40, 10, 60, 50, 70}). Бинарное дерево поиска имеет высоту 5, в то время как высота AVL-дерева равна 2. В общем случае высота сбалансированного дерева не превышает O(log2n). Таким образом, AVL-дерево является мощной структурой хранения, обеспечивающей быстрый доступ к данным.
В этом разделе используется упоминавшийся в предыдущей статье подход, при котором поисковое дерево строится отдельно от своих узлов. Сначала мы разработаем класс AVLTreeNode, а затем используем объекты этого типа для конструирования класса AVLTree. Предметом пристального внимания будут методы Insert и Delete. Они требуют тщательного проектирования, поскольку должны гарантировать, что все узлы нового дерева останутся сбалансированными по высоте.