@Rastr_0

Как реализовать правосторонний бинарный поиск?

Как доделать этот бинарный поиск так, чтобы он стал правосторонним?
long long right_binary_search(std::vector<long long>& one, long long num)
{
	long long l = 0, r = one.size() - 1;
	while (l < r)
	{
		long long mid = l + (r - l) / 2;
		if (one[mid] == num)
		{
			return mid;
		}
		else if (one[mid] < num)
			l = mid + 1;
		else if (one[mid] >= num)
			r = mid - 1;
	}
	if (one[l] == num)
		return l;
	else
		return -1;
}
  • Вопрос задан
  • 309 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Уберите проверку на совпадение внутри while. Присваивайте границам интервала mid, а не mid+1 или -1.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы