- •1. Типы данных
- •2. Стандартные типы пользователя
- •3. Структуры данных
- •4. Классификация структур данных
- •Векторы
- •5. Записи и таблицы.
- •34. Сортировка методом прямого включения
- •6. Понятие списковой структуры. Стек.
- •7. Очередь.
- •Insert (q, X)
- •8) Пример работы с очередью с использованием стандартных процедур.
- •9.Кольцевые полустатические очереди. Операции над кольцевой очередью
- •10. Понятие Динамических структур данных. Организация односвяз. И двусвяз. Списков. Простейшие операции над односвяз списками
- •11. Реализация стеков с помощью (односвязных) списков
- •12. Смысл и организация операций создания и удаления элемента динамической структуры. Понятие свободного списка и пула свободных эл-ов. Утилизация освободившихся элементов
- •13. Очередь и операции над ней при реализации со связными списками.
- •14. Операции вставки и извлечения элементов из списка. Сравнение этих операций с аналогичными массивами. Недостаток связного списка по сравнению с массивом.
- •1 5. Пример алг реш зад извлечения эл-ов из списка по заданному признаку.
- •16. Пример алг решения зад. Вставки заданных элементов в упорядоченный список.
- •17. Элементы заголовков в списках; нелинейные связные структуры.
- •18. Понятие рекурсивных структур данных. Деревья, их признаки и представления
- •19. Алгоритм сведения m-арного дерева к бинарному; основные операции над деревьями; виды обхода
- •20. Понятие поиска, ключей; назначение и структура алгоритмов поиска
- •21. Последовательный поиск и его эффективность
- •22. Индексно-последовательный поиск
- •23. Переупорядочивание таблиц с учетом вероятности поиска элемента; переупорядочивание путем перестановки в начало списка
- •24) Метод оптимизации поиска путем (Переупорядочивание таблицы) перестановки найденного элемента в начало списка
- •25. Метод транспозиции при оптимизированном поиске (для переупорядочивания таблицы поиска
- •26. Бинарный поиск
- •27. Алгоритм создания упорядоченного бинарного дерева
- •29. Поиск по бинарному дереву с включением
- •33. Сортировка методом прямого выбора
- •30. Поиск по бинарному дереву с удалением
- •28. Эффективность поиска по бинарному дереву
- •31. Алгоритмы прохождения бинарных деревьев
- •32. Понятие сортировки, ее эффективность; классификация методов сортировки
- •35. Сортировка методом прямого обмена (пузырьковая).
- •36. Быстрая сортировка
- •37. Сортировка Шелла
- •38. Сортировка с помощью бинарного дерева
- •39. Сравнительный анализ эффективности методов сортировки
- •40. Нерекурсивный алгоритм обхода дерева в прямом порядке
20. Понятие поиска, ключей; назначение и структура алгоритмов поиска
Поиск
Поиск является одной из основных операций при обработке информации в ЭВМ. Ее назначение - по заданному аргументу найти среди массива данных те данные, которые соответствуют этому аргументу.
Набор данных (любых) будем называть таблицей или файлом. Любое данное (или элемент структуры) отличается каким-то признаком от других данных. Этот признак называется ключом. Ключ может быть уникальным, т. е. в таблице существует только одно данное с этим ключом. Такой уникальный ключ называется первичным. Вторичный ключ в одной таблице может повторяться, но по нему тоже можно организовать поиск. Ключи данных могут быть собраны в одном месте (в другой таблице) или представлять собой запись, в которой одно из полей - это ключ. Ключи, которые выделены из таблицы данных и организованы в свой файл, называются внешними ключами.. Если ключ находится в записи, то он называется внутренним.
Поиском по заданному аргументу называется алгоритм, определяющий соответствие ключа с заданным аргументом. Результатом работы алгоритма поиска может быть нахождение этого данного или отсутствие его в таблице. В случае отсутствия данного возможны две операции:
1. индикация того, что данного нет
2. вставка данного в таблицу
21. Последовательный поиск и его эффективность
Последовательный поиск применяется в том случае, если неизвестна организация данных или данные неупорядочены. Тогда производится последовательный просмотр по всей таблице начиная от младшего адреса в оперативной памяти и кончая самым старшим.
Пусть k - массив ключей. Для каждого k(i) существует r(i) - данное. Key - аргумент поиска. Ему соответствует информационная запись rec.
Алгоритм:
Переменная search хранит номер найденного элемента.
for i = 1 to n
if k(i) = key then
search = i
return
endif
next i
search = 0
return
Если элемент в таблице не найден и необходимо произвести вставку, то последние два оператора заменяются на
n = n + 1
k(n) = key
r(n) = rec
search = n
return
Поиск в односвязном списке
Если таблица задана в виде списка, то производится последовательный поиск в списке
Алгоритм:
q = nil
p = table
while (p <> nil) do
if k(p) = key then
search = p
return
endif
q = p
p = nxt(p)
endwhile
s = getnode
k(s) = key
r(s) = rec
nxt(s) = nil
if q = nil then table = s
else
nxt(q) = s
endif
search = s
return
Эффективность последовательного поиска
Эффективность любого поиска может оцениваться по количеству сравнений С аргумента поиска с ключами таблицы данных. Чем меньше количество сравнений, тем эффективнее алгоритм поиска.
Эффективность последовательного поиска в массиве
Cmin = 1, Cmax = n.
Если данные расположены равновероятно во всех ячейках массива, то
Cср ≈ (n + 1)/2.
Эффективность последовательного поиска в списке - то же самое.
Порядок эффективности последовательного поиска O (n)
Достоинством списковой структуры является ускоренный алгоритм удаления или вставки элемента в список, причем время вставки или удаления не зависит от количества элементов, а в массиве каждая вставка или удаление требуют передвижения примерно половины элементов.
Эффективность последовательного поиска можно увеличить.