
- •Конспект лекций по курсу
- •Абстрактные структуры данных
- •Определение
- •Базовые структуры данных
- •Очереди и стеки
- •Деревья
- •Внутренние структуры данных
- •Отображение абстрактных структур данных на внутренние
- •Строка-вектор
- •1. Функция сцепления двух строк
- •2. Функция поэлементного сравнения двух строк
- •3. Функция разбиения строки.
- •4. Функция нахождения подстроки в строке
- •Строка-список
- •1. Сцепление двух строк
- •2. Поэлементное сравнение двух строк
- •3. Разбиение строки на части
- •4. Функция нахождения подстроки в строке
- •Стек-вектор
- •Стек-список
- •Очереди
- •Очередь-вектор
- •Очередь-список
- •Деревья
- •Классификация таблиц
- •Способ работы с таблицей
- •Способ доступа к таблице
- •Просматриваемые таблицы
- •Статическая просматриваемая таблица-вектор
- •Динамическая просматриваемая таблица-вектор
- •Просматриваемая таблица-список
- •Упорядоченные таблицы
- •Упорядоченная таблица-вектор
- •Динамическая упорядоченная таблица – вектор
- •Упорядоченная таблица – двоичное дерево
- •Перемешанные таблицы
- •Открытое перемешивание
- •Перемешивание сцеплением
Способ работы с таблицей
По организации способа работы таблицы делятся на две группы:
статические таблицы, состояние которых фиксировано и не изменяется во времени. Для статических таблиц определена только операция поиска; операции включения/удаления элементов не определены. Для таких таблиц важно минимизировать время поиска, используя соответствующую организацию таблицы;
динамические таблицы, состояние которых может меняться во времени; такая таблица является объектом (возможно) частых вставок (и удалений). Для динамических таблиц определены все приведенные выше операции. Для динамических таблиц важно обеспечить достаточно эффективное выполнение каждой из указанных операций.
Способ доступа к таблице
По организации способа доступа таблицы делятся на:
просматриваемыетаблицы,
упорядоченныетаблицы,
таблицы прямого (или произвольного) доступа,
перемешанные(хэш) таблицы.
Способ доступа к таблице определяет, как (по какому алгоритму) будет выполняться операция поиска.
Приведенные два критерия являются независимыми и могут быть применены к одной и той же таблице. Таким образом, можно определить разные типы таблиц, например: статическая просматриваемая таблица, динамическая просматриваемая таблица, динамическая перемешанная таблица, и так далее.
Для сравнения эффективности различных способов доступа к таблицам необходимо ввести некоторую величину S, которая определяется какдлина поиска, требуемого для нахождения в таблице конкретной записи. Под длиной поиска будем понимать количество элементов таблицы, которое необходимо просмотреть, прежде чем будет найдена искомая запись.
Для того чтобы оценить эффективность способа доступа, введем еще две характеристики: максимальнуюдлину поиска (обозначим ее черезT) исреднююдлину поиска, требуемого для нахождения некоторой записи в таблице (обозначим ее черезD).
Далее будут подробно рассмотрены все типы таблиц и способы их отображения.
Просматриваемые таблицы
В просматриваемой таблице порядок расположения элементов никак не связан со значениями ключей (рис. II–35). Поэтому поиск элемента по ключу осуществляется обычнымпросмотромвсех элементов таблицы, начиная с первого и до искомого (если он есть в таблице; тогда поиск заканчивается успешно), или до конца таблицы (тогда поиск заканчивается неуспешно).
-
Ключ
Информация
08
. . .
33
. . .
47
. . .
25
. . .
18
. . .
Рис. II–35
Можно определить длину поиска элемента с ключом ki, находящегося в i-ой позиции таблицы (например, элемент с ключом 47 находится в позиции 3):
S= i.
Очевидно, что для просматриваемой таблицы дольше всего выполняется поиск последнего элемента таблицы; следовательно, максимальная длина поиска
T=n,
где n– размер таблицы.
Вообще говоря, средняя длина поиска будет зависеть от частоты обращения к различным записям. Так, например, если в просматриваемой таблице первая запись требуется гораздо чаще, чем все остальные, то средняя длина поиска будет близка к 1. В соответствии с этим среднюю длину поиска можно определить следующим образом:
D=
ipi
где i – порядковый номер записи, а pi– вероятность того, что требуемая запись имеет номер i.
Если частота обращений неизвестна,
можно предположить, что к каждой записи
таблицы будет произведено одинаковое
количество обращений, т.е. искомая запись
с равной вероятностью находится на
любом месте таблицы и
.
Тогда средняя длина поиска
Просматриваемая таблица может быть и статической, и динамической; она может быть отображена в памяти и вектором, и списком. Рассмотрим особенности реализации операций для разных способов отображения просматриваемой таблицы.