Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Поиск
searching

Поиск

Линейный поиск, бинарный поиск, поиск в деревьях и графах

Поиск

#Линейный поиск

Линейный поиск — простейший алгоритм поиска, который проверяет каждый элемент последовательно.

  • Сложность: O(n) в худшем случае
  • Применение: несортированные массивы, малые размеры данных
  • Особенности: прост в реализации, не требует предварительной обработки данных

#Бинарный поиск

Бинарный поиск — эффективный алгоритм поиска в отсортированном массиве.

  • Сложность: O(log n)
  • Условие: массив должен быть отсортирован
  • Принцип: делит массив пополам на каждом шаге, сравнивает с серединой
  • В Python: bisect.bisect_left(arr, val) и bisect.bisect_right(arr, val)

#Реализация бинарного поиска

def binary_search(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid elif arr[mid] < target: left = mid + 1 else: right = mid - 1 return -1 # не найдено

#Поиск в структурах данных

#Хэш-таблицы

  • Поиск: O(1) в среднем случае
  • Требования: хорошая хэш-функция, управление коллизиями
  • В Python: dict — высокооптимизированная хэш-таблица

#Деревья поиска (BST)

  • Поиск: O(h), где h — высота дерева
  • Для сбалансированного дерева: O(log n)
  • Для вырожденного дерева (список): O(n)

#Практические рекомендации

  1. Выбор алгоритма поиска

    • Несортированные данные: линейный поиск или хэш-таблица
    • Отсортированные данные: бинарный поиск
    • Частые операции поиска: создайте индекс (хэш-таблицу или BST)
  2. Оптимизация поиска

    • Используйте встроенные функции (bisect, dict)
    • Для больших данных рассмотрите индексацию
    • Учитывайте кэширование при повторных запросах
  3. Анализ производительности

    • Измеряйте реальное время выполнения на ваших данных
    • Учитывайте overhead от создания структур данных
    • Оценивайте потребление памяти при выборе подхода

Далее: Графы