Jump to content

Структура данных поиска

В информатике структура поисковых данных. [ нужна ссылка ] — это любая структура данных , которая позволяет эффективно извлекать определенные элементы из набора элементов, например определенную запись из базы данных .

Самая простая, общая и наименее эффективная структура поиска — это просто неупорядоченный последовательный список всех элементов. Нахождение искомого элемента в таком списке методом линейного поиска неизбежно требует ряда операций, пропорциональных числу n элементов, как в худшем, так и в среднем случае . Полезные структуры данных поиска позволяют ускорить поиск; однако они ограничены запросами определенного типа. Более того, поскольку стоимость построения таких структур как минимум пропорциональна n , они окупаются только в том случае, если необходимо выполнить несколько запросов к одной и той же базе данных (или к базе данных, которая мало меняется между запросами).

Статические структуры поиска предназначены для ответа на множество запросов в фиксированной базе данных; динамические структуры также позволяют вставлять, удалять или изменять элементы между последовательными запросами. В динамическом случае необходимо также учитывать стоимость исправления структуры поиска для учета изменений в базе данных.

Классификация

[ редактировать ]

Самый простой вид запроса — найти запись, имеющую определенное поле ( ключ ), равное указанному значению v . Другими распространенными типами запросов являются «найти элемент с наименьшим (или наибольшим) значением ключа», «найти элемент с наибольшим значением ключа, не превышающим v », «найти все элементы со значениями ключей между указанными границами v min и v max ».

В некоторых базах данных значениями ключей могут быть точки в некотором многомерном пространстве . Например, ключом может быть географическое положение ( широта и долгота ) на Земле . В этом случае распространенными типами запросов являются «найти запись с ключом, ближайшим к данной точке v », или «найти все элементы, ключ которых находится на заданном расстоянии от v », или «найти все элементы в указанной области R». пространства».

Частым частным случаем последнего являются одновременные запросы диапазона по двум или более простым ключам, например «найти все записи о сотрудниках с зарплатой от 50 000 до 100 000, нанятых в период с 1995 по 2007 год».

Ключи по одному заказу

[ редактировать ]

Нахождение наименьшего элемента

[ редактировать ]

Асимптотический анализ наихудшего случая

[ редактировать ]

В этой таблице асимптотическое обозначение O ( f ( n )) означает «непревышение некоторого фиксированного кратного f ( n ) в худшем случае».

Структура данных Вставлять Удалить Баланс Получить по индексу Поиск Найти минимум Найдите максимум Использование пространства
Несортированный массив О (1)
(см. примечание)
О (1)
(см. примечание)
Н/Д О (1) На ) На ) На ) На )
Сортированный массив На ) На ) Н/Д О (1) О (логарифм n ) О (1) О (1) На )
Куча О (1) О (1) На ) На )
Очередь О (1) О (1) На ) На )
Несортированный связанный список О (1) О (1) [1] Н/Д На ) На ) На ) На ) На )
Сортированный связанный список На ) О (1) [1] Н/Д На ) На ) О (1) О (1) На )
Пропустить список
Самобалансирующееся двоичное дерево поиска О (логарифм n ) О (логарифм n ) О (логарифм n ) Н/Д О (логарифм n ) О (логарифм n ) О (логарифм n ) На )
Куча О (логарифм n ) О (логарифм n ) О (логарифм n ) Н/Д На ) O (1) для минимальной кучи
O ( n ) для максимальной кучи [2]
O (1) для максимальной кучи
O ( n ) для минимальной кучи [2]
На )
Хэш-таблица О (1) О (1) На ) Н/Д О (1) На ) На ) На )
Trie ( k = средняя длина ключа) Хорошо ) Хорошо ) Н/Д Хорошо ) Хорошо ) Хорошо ) Хорошо ) О ( к н )
Декартово дерево
B-дерево О (логарифм n ) О (логарифм n ) О (логарифм n ) Н/Д О (логарифм n ) О (логарифм n ) О (логарифм n ) На )
Красно-черное дерево О (логарифм n ) О (логарифм n ) О (логарифм n ) На )
Распространение дерева
АВЛ-дерево О (логарифм n )
кд дерево

Примечание . Вставка в несортированный массив иногда обозначается как O ( n ) из-за предположения, что вставляемый элемент должен быть вставлен в одно конкретное место массива, что потребует сдвига всех последующих элементов на одну позицию. Однако в классическом массиве массив используется для хранения произвольных неотсортированных элементов, и, следовательно, точное положение любого данного элемента не имеет значения, а вставка осуществляется путем увеличения размера массива на 1 и сохранения элемента в конце. массива, что является операцией O (1). [3] [4] Аналогичным образом, операция удаления иногда обозначается как O ( n ) из-за предположения, что последующие элементы должны быть сдвинуты, но в классическом несортированном массиве порядок неважен (хотя элементы неявно упорядочены по времени вставки), поэтому удаление может выполняться путем замены удаляемого элемента на последний элемент массива и последующего уменьшения размера массива на 1, что является операцией O (1). [5]

Эта таблица представляет собой лишь приблизительное резюме; для каждой структуры данных существуют особые ситуации и варианты, которые могут привести к разным затратам. Также можно объединить две или более структуры данных для снижения затрат.

  1. ^ Перейти обратно: а б Томас Х. Кормен; Чарльз Э. Лейзерсон; Рональд Л. Ривест (1990). Введение в алгоритмы . Колледж информационных наук и технологий Пенсильванского университета. ISBN  978-0-262-53091-0 . LIST-DELETE выполняется за время O (1), но если удалить элемент с заданным ключом, в худшем случае потребуется время Θ(n), поскольку мы должны сначала вызвать LIST-SEARCH.
  2. ^ Перейти обратно: а б Томас Х. Кормен; Чарльз Э. Лейзерсон; Рональд Л. Ривест (1990). Введение в алгоритмы . Колледж информационных наук и технологий Пенсильванского университета. ISBN  978-0-262-53091-0 . Существует два типа двоичных куч: максимальные кучи и минимальные кучи. В обоих типах значения в узлах удовлетворяют свойству кучи ... самый большой элемент в максимальной куче хранится в корне... Наименьший элемент в минимальной куче находится в корне... Операция HEAP -MAXIMUM возвращает максимальный элемент кучи за время Θ(1), просто возвращая значение A [1] в куче.
  3. ^ Аллен Шеррод (2007). Структуры данных и алгоритмы для разработчиков игр . Cengage Обучение. ISBN  978-1-58450-663-8 . Вставка элемента в неупорядоченный массив не зависит ни от чего, кроме помещения нового элемента в конец списка. Это дает вставку в неупорядоченный массив O (1).
  4. ^ Томас Х. Кормен; Чарльз Э. Лейзерсон; Рональд Л. Ривест (1990). Введение в алгоритмы . Колледж информационных наук и технологий Пенсильванского университета. ISBN  978-0-262-53091-0 .
  5. ^ «Алгоритм — временная сложность удаления в несортированном массиве» . Поиск элемента с заданным значением является линейным. Поскольку массив все равно не отсортирован, вы можете выполнить само удаление за постоянное время. Сначала поменяйте местами элемент, который хотите удалить, в конец массива, затем уменьшите размер массива на один элемент.

См. также

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 47144f2ef56437d51a262fd5014bdd17__1698417720
URL1:https://arc.ask3.ru/arc/aa/47/17/47144f2ef56437d51a262fd5014bdd17.html
Заголовок, (Title) документа по адресу, URL1:
Search data structure - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)