Назад к вопросам
Junior
71
questionbank
Какой алгоритм имеет логарифмическую сложность O(log n)?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Алгоритм бинарного (двоичного) поиска имеет логарифмическую временную сложность O(log n).
Принцип работы бинарного поиска:
- Требует отсортированного массива (или списка).
- На каждом шаге сравнивает искомый элемент с элементом в середине текущего диапазона поиска.
- Если элемент совпадает, поиск завершен.
- Если искомый элемент меньше среднего, поиск продолжается в левой половине диапазона.
- Если искомый элемент больше среднего, поиск продолжается в правой половине диапазона.
- Диапазон поиска сокращается вдвое на каждом шаге.
Пример реализации на Python:
# Функция бинарного поиска
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
mid_val = arr[mid]
if mid_val == target:
return mid # Элемент найден, возвращаем индекс
elif mid_val < target:
low = mid + 1 # Игнорируем левую половину
else:
high = mid - 1 # Игнорируем правую половину
return -1 # Элемент не найден
# Пример использования
# sorted_list = [2, 5, 8, 12, 16, 23, 38, 56, 72, 91]
# target_value = 23
# result = binary_search(sorted_list, target_value)
# if result != -1:
# print(f"Элемент найден по индексу: {result}")
# else:
# print("Элемент не найден")
Логарифмическая сложность обусловлена тем, что количество операций пропорционально логарифму от размера входных данных (n), так как на каждом шаге пространство поиска уменьшается в два раза.