int div_(double i, double val)
{
return ceil(i / val);
}
int bsrch( int array[], size_t size, int value )
{
size /= sizeof(decltype(array));
if( size == 0 )
{
return -1;
}
int start = size / 2;
int add = 0;
for( int i = start, k = start;; k = div_(k, 2) )
{
if( array[i-1] == value )
{
return i-1;
}
if( value < array[i-1] )
{
i = add + div_(k,2);
}
else if( value > array[i-1] )
{
add += k;
i = div_(k,2) + add;
}
}
return -1;
}
Comments