MODULE BS; IMPORT Out; VAR List:ARRAY 10 OF REAL; PROCEDURE Init(VAR List:ARRAY OF REAL); BEGIN List[0] := -31; List[1] := 0; List[2] := 1; List[3] := 2; List[4] := 2; List[5] := 4; List[6] := 65; List[7] := 83; List[8] := 99; List[9] := 782; END Init; PROCEDURE BinarySearch(List:ARRAY OF REAL;Element:REAL):LONGINT; VAR L,M,H:LONGINT; BEGIN L := 0; H := LEN(List)-1; WHILE L <= H DO M := (L + H) DIV 2; IF List[M] > Element THEN H := M - 1; ELSIF List[M] < Element THEN L := M + 1; ELSE RETURN M; END; END; RETURN -1; END BinarySearch; PROCEDURE RBinarySearch(VAR List:ARRAY OF REAL;Element:REAL;L,R:LONGINT):LONGINT; VAR M:LONGINT; BEGIN IF R < L THEN RETURN -1 END; M := (L + R) DIV 2; IF Element = List[M] THEN RETURN M ELSIF Element < List[M] THEN RETURN RBinarySearch(List, Element, L, R-1) ELSE RETURN RBinarySearch(List, Element, M-1, R) END; END RBinarySearch; BEGIN Init(List); Out.Int(BinarySearch(List, 2), 0); Out.Ln; Out.Int(RBinarySearch(List, 65, 0, LEN(List)-1),0); Out.Ln; END BS.