Учитывая отсортированный массив A
и элемент x
, мне нужно найти алгоритм, который возвращает индекс x
в A
или -1
если x
не в A
. временная сложность алгоритма должна быть Θ(logd)
, когда d является количество элементов, которое появляется, прежде чем x
в A
, или если x
не в A
, д является количество элементов, которые были до x
, если он был в A
.Найти элемент в отсортированном массиве
Двоичный поиск не достаточно хорош, потому что его лучшим случаем является O (1). Я думал начать с начала массива и начать проверять индексы, обладающие степенями 2. но я потерялся.
Двоичный поиск в худшем случае * is * O (log n) ... –
Если бы это был журнал (размер (A)) 'вы хотели, бинарный поиск работал бы. Если вы пытаетесь оптимизировать с точки зрения местоположения 'x', моя кишка говорит о полномочиях проверки' 2', пока вы не найдете значение больше, чем 'x', а затем двоичный поиск в верхней половине, но я не совершенно ясно, что вы просите. –
@taylorswift Я знаю, но мне нужно 'Θ (logd)', что означает, что лучшим случаем является logd, а его неправильный в двоичном поиске. – Genadi