В статье Просто об асимптотической сложности во втором примере я привёл один из самых известных алгоритмов поиска — бинарный поиск. Поэтому хотел бы его разобрать просто и наглядно в отдельной статье. Бинарный поиск — это способ быстро найти нужное значение в отсортированном списке (массиве), словно «разделяя пополам» область поиска. Посмотрим на алгоритм: Есть массив из 10 элементов с пронумерованными индексами от 0 до 9. Наша задача — найти число 23 (target). Задаем границы поиска: left = 0, right = длина массива - 1 = 9. Начинаем цикл while: Первая итерация: mid = (0 + 9) // 2 = 4, поэтому arr[4] = 19. Так как 19 < 23, сдвигаем левую границу (мы знаем, что массив отсортирован, а значит искать 23 перед значением 19 смысла нет) — обновляем left = mid + 1 = 5. Вторая итерация: mid = (5 + 9) // 2 = 7, arr[7] = 31. Так как 31 > 23 (то есть arr[mid] > target), обновляем right = mid - 1 = 6. Третья итерация: mid = (5 + 6) // 2 = 5, arr[5] = 23. Элемент найден, result = 5, цикл завершается