Предположим, у меня есть vector<int> myVec
. Пусть в нем будет n
элементов. Я знаю, что эти элементы находятся в упорядоченном порядке (по возрастанию), а также что они уникальны. Пусть n = 10
и myVec
быть {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}. Мне даны l
и r
такие, что 0<=l<=r<=n-1
. Теперь я хочу, чтобы найти элемент val
в подвектора, который определяется в пределах l
и r
таким образом, чтоПользовательский бинарный поиск в векторе
- если
val
найден возвращениеval
- если
val
не найден, то вернуть (если это возможно) значение в подвектор, который меньше, чемval
. - Возврат false (или -1, возможно), если одно из указанных выше невозможно.
В вышеуказанном случае, если l = 3
и r = 5
. Подвектор {8, 10, 12}. Если val = 8
вернуть 8. Если val = 7
возвращает false (или -1). Если val = 9
возврат 8.
Как это реализовать. Я хочу, чтобы заказ сопоставим с бинарным поиском. Кроме того, можно использовать std::binary_search()
под заголовком algorithm
файл заголовка.
Если вы хотите сделать бинарный поиск алгоритма, названный 'binary_search' звучит многообещающе. Почему ты не попробовал? –
@ ZanLynx это не обычный двоичный поиск. Есть и другие условия. – daft300punk
Я не вижу, как другие условия меняют ситуацию. Пожалуйста, объясни. –