34 lines
4.5 KiB
Markdown
34 lines
4.5 KiB
Markdown
|
|
|
|||
|
|
|
|||
|
|
В ходе выполнения работы было установлено, что производительность каждой из трёх реализованных структур данных существенно зависит от их внутреннего устройства, а также от характера и порядка входных данных.
|
|||
|
|
|
|||
|
|
Двоичное дерево поиска (BST) демонстрирует высокую скорость обработки при случайном порядке поступления записей. Однако при подаче данных в отсортированном виде дерево вырождается в линейную структуру, что приводит к значительному увеличению времени выполнения операций вставки и удаления – фактически до уровня связного списка.
|
|||
|
|
|
|||
|
|
Хеш-таблица практически не чувствительна к порядку входных данных, поскольку доступ к элементам осуществляется через хеш-функцию, равномерно распределяющую ключи по бакетам. Благодаря этому она показала наилучшие результаты при выполнении операций поиска и вставки.
|
|||
|
|
Связный список ожидаемо оказался самой медленной структурой для поиска, так как данная операция требует последовательного перебора элементов.
|
|||
|
|
|
|||
|
|
Операция удаления также имеет свои особенности. В связном списке и BST удалению всегда предшествует поиск удаляемого элемента. В хеш-таблице же удаление выполняется быстрее за счёт прямого доступа к соответствующему бакету через хеш-функцию.
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
Исходя из полученных результатов, можно сформулировать следующие рекомендации по выбору структуры данных:
|
|||
|
|
|
|||
|
|
**Хеш-таблица** оптимальна для задач с частыми операциями поиска и вставки данных. Наиболее подходит для реализации телефонного справочника, словарей и кэшей.
|
|||
|
|
**Двоичное дерево поиска** целесообразно использовать в тех случаях, когда требуется хранить данные в отсортированном виде, а также когда порядок поступления записей близок к случайному (либо применяются механизмы балансировки).
|
|||
|
|
**Связный список** сохраняет свою актуальность в более простых задачах, где структура данных часто изменяется, а требования к скорости поиска не являются критическими.
|
|||
|
|
|
|||
|
|
## Количественные результаты
|
|||
|
|
|
|||
|
|
Параметры эксперимента: N = 3000 записей.
|
|||
|
|
|
|||
|
|
| Операция | LinkedList | HashTable | BST (random) | BST (sorted) |
|
|||
|
|
|----------|------------|-----------|--------------|---------------|
|
|||
|
|
| Вставка | 0.0235 с | 0.0012 с | 0.0057 с | 0.0457 с |
|
|||
|
|
| Поиск | 0.0200 с | 0.0010 с | 0.0023 с | 0.0388 с |
|
|||
|
|
| Удаление | 0.0123 с | 0.0012 с | 0.0035 с | 0.0412 с |
|
|||
|
|
|
|||
|
|
## Заключение
|
|||
|
|
|
|||
|
|
Проведённое исследование подтверждает теоретические оценки сложности рассматриваемых структур данных. Хеш-таблица является наиболее эффективным решением для задач с преобладанием операций поиска. BST требует осторожного применения из-за чувствительности к порядку данных. Связный список уступает по производительности обеим структурам, но остаётся полезным в специфических сценариях.
|
|||
|
|
|