DEFINT A-Z
DECLARE FUNCTION BSEARCH (Q%, A%(), N%)
CLS
DIM A(20)
FOR J = 0 TO 19: A(J) = J: PRINT USING "####"; A(J); : NEXT J
PRINT
A1 = 25: K = BSEARCH(A1, A(), 20)
IF K = -1 THEN
PRINT "Число "; A1; " в массиве не содержится"
ELSE
PRINT "Число "; A1; " найдено, его индекс = "; K
END IF
A1 = 12: K = BSEARCH(A1, A(), 20)
IF K = -1 THEN
PRINT "Число "; A1; " в массиве не содержится"
ELSE
PRINT "Число "; A1; " найдено, его индекс = "; K
END IF
END
FUNCTION BSEARCH (Q, A(), N)
LEFT = 0: RIGHT = N - 1
DO WHILE LEFT <= RIGHT
MIDDLE = (LEFT + RIGHT) \ 2
IF Q < A(MIDDLE) THEN
RIGHT = MIDDLE - 1
ELSE
IF Q > A(MIDDLE) THEN
LEFT = MIDDLE + 1
ELSE
BSEARCH = MIDDLE: EXIT FUNCTION
END IF
END IF
LOOP
BSEARCH = -1
END FUNCTION