Я выполняю двоичный поиск, скажем, мне нужно найти минимальное значение x
, так что black_box(x)
дает мне true
результат.Выполнение двоичного поиска
Свойство black_box(x)
- Если
black_box(x)
дает мне так, тоx+1,x+2,x+3,x+4....upto infinty
все дает мнеtrue
Для целочисленное значение это просто бинарный поиск
start=0;
end = Max;
ans=-1;
while(start<=end){
mid =(start+end)/2;
if(black_box(mid)):
end =mid-1
ans=mid;
else: start=mid+1;
}
Что делать, если я хочу floating point
целое число до двух десятичных знаков, как я должен выполнять двоичный поиск?
Если 'end = Inf', как вы можете определить его середину? Даже для 'int' это не так. –
@WillemVanOnsem Это выражение smiple, Inf будет максимальное значение, просто представление, надеюсь, вы получите это –
да, но есть способы представлять целые числа без максимального значения (или, по крайней мере, до тех пор, пока у вас не закончится память, например 'BigInteger' в Java. –