Pushok icon

bsrch

Pushok | PRO | 06/21/12 04:41:30 PM UTC | 0 ⭐ | 351 👁️ | Never ⏰ | []
C++ |

500 B

|

None

|

0 👍

/

0 👎

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