Meta Binary Search | One | Function to show the working of Meta binary search ; Set number of bits to represent largest array index ; while ( ( 1 << lg ) < n - 1 ) lg += 1 ; ; Incrementally construct the index of the target value ; find the element in one direction and update position ; if element found return pos otherwise - 1 ; Driver code
function bsearch ( A , key_to_search ) { let n = A . length ; let lg = parseInt ( Math . log ( n - 1 ) / Math . log ( 2 ) ) + 1 ; let pos = 0 ; for ( let i = lg ; i >= 0 ; i -- ) { if ( A [ pos ] == key_to_search ) return pos ; let new_pos = pos | ( 1 << i ) ; if ( ( new_pos < n ) && ( A [ new_pos ] <= key_to_search ) ) pos = new_pos ; } return ( ( A [ pos ] == key_to_search ) ? pos : - 1 ) ; } let A = [ - 2 , 10 , 100 , 250 , 32315 ] ; document . write ( bsearch ( A , 10 ) ) ;