Любой алгоритм для нахождения точки "опрокидывания" в худшем случае будет иметь как минимум сложность O (n).
Представьте, вы отсортировали массив и проверили менее n его элементов. Например, если в массиве 1 2 3 4 5 6 7 8 9 10
вы не проверяли элемент 4
, я могу заменить его на 100
и создать «ролловер» (1 2 3 100 5 6 7 8 9 10
). Ваш алгоритм не будет знать, так как он никогда не читает этот элемент.
Таким образом, ваш единственный вариант - пройти через все элементы, пока вы не найдете опрокидывание.
Спасибо Эялю Шнайдеру за полезный комментарий.
Кстати, я здесь единственный, кто не понимает этимологию слова «опрокидывание»?