Example 1 ( level 2 ) |
{Binary search in an ordered table}
LET
Arr : ARRAY ( 10 ) ;
Bi , Bs , M : INTEGERS ;
Found : BOOLEAN ;
V : INTEGER ;
BEGIN
INIT_VECT ( Arr , [ 34 , 56 , 87 , 123 , 134 , 187 , 230 , 422 , 760 , 1034 ] )
;
V := 123 ;
Bi := 1 ;
Bs := 10 ;
Found := FALSE ;
WHILE ( Bi <= Bs ) AND NOT Found
M := ( Bi + Bs ) / 2 ;
IF ELEMENT ( Arr [ M ] ) = V
Found := TRUE
ELSE
IF V < ELEMENT ( Arr [ M ] )
Bs := M - 1
ELSE
Bi := M + 1
ENDIF
ENDIF
ENDWHILE ;
WRITE ( Found )
END